{"version":3,"file":"app.bcfda50aef674c2416d8.js","mappings":"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AAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,OAAQ,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,SAAU,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,SAAU,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,QAAS,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,OAAQ,UAAW,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,OAAQ,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,QAAS,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,GAAI,QAAS,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,QAAS,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,QAAS,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,QAAS,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,QAAS,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,QAAS,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,QAAS,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,UAAW,CAAC,UAAW,UAAW,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,QAAS,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,SAAU,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,UAAW,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,QAAS,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,SAAU,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,QAAS,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,QAAS,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,UAAW,CAAC,QAAS,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,QAAS,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,UAAW,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,UAAW,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,SAAU,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,OAAQ,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,GAAI,QAAS,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,OAAQ,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,UAAW,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,UAAW,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,SAAU,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,QAAU,WAAY,CAAC,QAAU,SAAU,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,UAAW,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,OAAS,WAAY,CAAC,QAAU,UAAW,EAAE,QAAU,UAAW,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,UAAW,EAAE,QAAU,UAAW,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,OAAS,SAAU,EAAE,QAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,SAAU,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,SAAU,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,QAAS,UAAW,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,MAAO,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,SAAU,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,SAAU,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,OAAQ,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,SAAU,WAAY,EAAE,QAAS,WAAY,EAAE,SAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,OAAS,UAAW,EAAE,QAAU,UAAW,EAAE,QAAU,WAAY,EAAE,MAAQ,WAAY,EAAE,OAAS,WAAY,EAAE,QAAU,UAAW,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,UAAW,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,OAAS,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,MAAQ,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,UAAW,EAAE,OAAS,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,OAAS,WAAY,EAAE,QAAU,WAAY,EAAE,OAAS,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,UAAW,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,OAAS,WAAY,EAAE,QAAU,SAAU,EAAE,OAAS,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,SAAU,EAAE,OAAS,WAAY,EAAE,QAAU,WAAY,EAAE,MAAQ,UAAW,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,OAAS,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,OAAS,WAAY,EAAE,QAAU,WAAY,EAAE,OAAS,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,EAAE,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,UAAW,CAAC,QAAU,WAAY,CAAC,OAAS,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,UAAW,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,UAAW,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,OAAS,WAAY,CAAC,OAAS,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,UAAW,CAAC,QAAU,UAAW,CAAC,QAAU,UAAW,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,UAAW,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,OAAS,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,UAAW,CAAC,OAAS,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,OAAS,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,UAAW,CAAC,QAAU,WAAY,CAAC,QAAU,UAAW,CAAC,QAAU,WAAY,CAAC,OAAS,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,MAAQ,WAAY,CAAC,QAAU,UAAW,CAAC,QAAU,WAAY,CAAC,OAAS,WAAY,CAAC,QAAU,WAAY,CAAC,OAAS,WAAY,CAAC,QAAU,WAAY,CAAC,OAAS,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,UAAW,CAAC,OAAS,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,UAAW,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,WAAY,CAAC,QAAU,UAAW,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,QAAS,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,OAAQ,UAAW,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,CAAC,SAAU,WAAY,C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","sources":["webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Util.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Types.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/lib/big.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Numeric.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Decimal.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/BigInt.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Date.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/RegExp.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/String.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Option.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Global.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Native.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Array.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/List.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Seq.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/FSharp.Core.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Set.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Elmish.4.2.0/sub.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Event.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Timer.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Observable.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/AsyncBuilder.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Choice.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Async.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Elmish.4.2.0/cmd.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Elmish.4.2.0/prelude.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Double.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Range.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Elmish.4.2.0/ring.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Elmish.4.2.0/program.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Int32.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Elmish.React.4.0.0/common.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Elmish.React.4.0.0/react.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Map.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Reflection.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/Json.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Uri.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Long.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Parsimmon.4.1.0/Parsimmon.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Parsimmon.4.1.0/Parsimmon.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/Parser.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/SimpleJson.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/TypeCheck.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/DateOffset.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/DateOnly.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Guid.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/BitConverter.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/TypeInfo.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/MapUtil.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/MutableMap.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/MutableSet.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/TypeInfo.Converter.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/TimeSpan.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/Json.Converter.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/isBrowser.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/TimeOnly.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/quote.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.Domain/Weather.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Feliz.2.8.0/Interop.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Feliz.2.8.0/ReactInterop.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Feliz.2.8.0/Internal.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Feliz.Router.4.0.0/Router.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Feliz.2.8.0/Helpers.fs.js","webpack://SL-WeatherService/./.fable-build/Router.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.WeatherServiceUI.Shared/Profiles/API.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.WeatherServiceUI.Shared/Errors.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Result.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Remoting.Client.7.32.0/Types.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.OidcClient.1.0.2/Fable.OidcClient.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Remoting.Client.7.32.0/Http.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Remoting.Client.7.32.0/Extensions.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Fable.Remoting.Client.7.32.0/Proxy.fs.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.Domain/Forecast.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.Domain/Models.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.Domain/PmpModelArea.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.WeatherServiceUI.Shared/Models/API.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.WeatherServiceUI.Shared/Vessels/API.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.WeatherServiceUI.Shared/SessionDetails/API.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.WeatherServiceUI.Shared/Dashboards/API.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.Domain/PortWind.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.WeatherServiceUI.Shared/PortWind/API.js","webpack://SL-WeatherService/./.fable-build/Server.js","webpack://SL-WeatherService/./.fable-build/UseElmish.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/images/sws_white_vertical.svg","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Icons/Icon.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Core/Box.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Panels/SidebarMenu.js","webpack://SL-WeatherService/./.fable-build/Components/HotToast/HotToast.js","webpack://SL-WeatherService/./.fable-build/Components/HotToast/Toast.js","webpack://SL-WeatherService/./.fable-build/Components/HotToast/Toaster.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/Components/TimeZones/Components.module.css?f1fa","webpack://SL-WeatherService/./.fable-build/Components/TimeZones/Context.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Forms/NumericTextInput.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Elements/Button.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Forms/Switch.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Modal/Modal.js","webpack://SL-WeatherService/./.fable-build/Components/TimeZones/Components.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/Components/StenaWebUI/Icons/CurrentIcon.js","webpack://SL-WeatherService/./.fable-build/Components/TimeZones/Storage.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Elements/Banner.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Core/Heading.js","webpack://SL-WeatherService/./.fable-build/SharedView.js","webpack://SL-WeatherService/./.fable-build/Components/Leaflet/Shared.js","webpack://SL-WeatherService/./.fable-build/Components/Leaflet/Polygon.js","webpack://SL-WeatherService/./.fable-build/Components/Leaflet/Rectangle.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/Pages/Models.module.scss?b959","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Core/Text.js","webpack://SL-WeatherService/./.fable-build/fable_modules/Feliz.UseElmish.2.5.0/UseElmish.fs.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Elements/Link.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Grid/StandardTable.js","webpack://SL-WeatherService/./.fable-build/TimeSpan.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Elements/CheckBox.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Forms/SwitchWithLabel.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/Components/Leaflet/MapEventsControl.js","webpack://SL-WeatherService/./.fable-build/Components/Leaflet/MapEvents.js","webpack://SL-WeatherService/./.fable-build/Components/Leaflet/Popup.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/Components/Leaflet/LegendControl.js","webpack://SL-WeatherService/./.fable-build/Components/Leaflet/Legend.js","webpack://SL-WeatherService/./.fable-build/Components/Leaflet/Container.js","webpack://SL-WeatherService/./.fable-build/Pages/Models.js","webpack://SL-WeatherService/./.fable-build/List.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/Pages/Vessels.module.scss?fa34","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Core/Indent.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Core/Spacing.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Core/Column.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Core/Row.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Core/Space.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Panels/LoadingScreen.js","webpack://SL-WeatherService/./.fable-build/Pages/Vessels.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/Seq2.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/Pages/SessionDetails.module.scss?b52f","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Elements/Chip.js","webpack://SL-WeatherService/./.fable-build/Pages/Common.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Elements/Tooltip.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Core/SeparatorLine.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Elements/Label.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/images/up-arrow.svg","webpack://SL-WeatherService/./.fable-build/Components/Leaflet/Polyline.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/Components/Leaflet/RotatedMarker.js","webpack://SL-WeatherService/./.fable-build/Components/Leaflet/Marker.js","webpack://SL-WeatherService/./.fable-build/Components/Leaflet/FeatureGroup.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Panels/Collapsible.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/Components/StenaWebUI/Elements/ReactRouterCrumbComponent.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Elements/Breadcrumbs.js","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Modal/Drawer.js","webpack://SL-WeatherService/./.fable-build/Pages/SessionDetails.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/Pages/Dashboard.module.scss?3388","webpack://SL-WeatherService/./.fable-build/Components/StenaWebUI/Elements/Tag.js","webpack://SL-WeatherService/./.fable-build/Components/Rc-progress/rc-progress.js","webpack://SL-WeatherService/./.fable-build/Pages/Dashboard.js","webpack://SL-WeatherService/./.fable-build/StenaWeather.Domain/Units.js","webpack://SL-WeatherService/./.fable-build/Listeners.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/images/map-marker.svg","webpack://SL-WeatherService/./.fable-build/Pages/ship_at_quay.svg.js","webpack://SL-WeatherService/./.fable-build/Pages/PortWindDashboard.js","webpack://SL-WeatherService/./.fable-build/Utils.js","webpack://SL-WeatherService/./.fable-build/fable_modules/fable-library-js.4.19.3/FSharp.Collections.js","webpack://SL-WeatherService/./src/StenaWeather.WeatherServiceUI.Client/Pages/PortWind.module.scss?ffcc","webpack://SL-WeatherService/./.fable-build/Pages/PortWind.js","webpack://SL-WeatherService/./.fable-build/View.js","webpack://SL-WeatherService/./.fable-build/App.js"],"sourcesContent":["// tslint:disable:ban-types\nexport function isArrayLike(x) {\n return Array.isArray(x) || ArrayBuffer.isView(x);\n}\nexport function isIterable(x) {\n return x != null && typeof x === \"object\" && Symbol.iterator in x;\n}\nexport function isEnumerable(x) {\n return x != null && typeof x.GetEnumerator === \"function\";\n}\nexport function isComparer(x) {\n return x != null && typeof x.Compare === \"function\";\n}\nexport function isComparable(x) {\n return x != null && typeof x.CompareTo === \"function\";\n}\nexport function isEquatable(x) {\n return x != null && typeof x.Equals === \"function\";\n}\nexport function isHashable(x) {\n return x != null && typeof x.GetHashCode === \"function\";\n}\nexport function isDisposable(x) {\n return x != null && typeof x.Dispose === \"function\";\n}\nexport function disposeSafe(x) {\n if (isDisposable(x)) {\n x.Dispose();\n }\n}\nexport function defaultOf() {\n return null;\n}\nexport function sameConstructor(x, y) {\n return Object.getPrototypeOf(x)?.constructor === Object.getPrototypeOf(y)?.constructor;\n}\nexport class Enumerable {\n constructor(en) {\n this.en = en;\n }\n GetEnumerator() { return this.en; }\n \"System.Collections.IEnumerable.GetEnumerator\"() { return this.en; }\n [Symbol.iterator]() {\n return this;\n }\n next() {\n const hasNext = this.en[\"System.Collections.IEnumerator.MoveNext\"]();\n const current = hasNext ? this.en[\"System.Collections.Generic.IEnumerator`1.get_Current\"]() : undefined;\n return { done: !hasNext, value: current };\n }\n}\nexport class Enumerator {\n constructor(iter) {\n this.iter = iter;\n this.current = defaultOf();\n }\n [\"System.Collections.Generic.IEnumerator`1.get_Current\"]() {\n return this.current;\n }\n [\"System.Collections.IEnumerator.get_Current\"]() {\n return this.current;\n }\n [\"System.Collections.IEnumerator.MoveNext\"]() {\n const cur = this.iter.next();\n this.current = cur.value;\n return !cur.done;\n }\n [\"System.Collections.IEnumerator.Reset\"]() {\n throw new Error(\"JS iterators cannot be reset\");\n }\n Dispose() {\n return;\n }\n}\nexport function toEnumerable(e) {\n if (isEnumerable(e)) {\n return e;\n }\n else {\n return new Enumerable(new Enumerator(e[Symbol.iterator]()));\n }\n}\nexport function getEnumerator(e) {\n if (isEnumerable(e)) {\n return e.GetEnumerator();\n }\n else {\n return new Enumerator(e[Symbol.iterator]());\n }\n}\nexport function toIterator(en) {\n return {\n next() {\n const hasNext = en[\"System.Collections.IEnumerator.MoveNext\"]();\n const current = hasNext ? en[\"System.Collections.Generic.IEnumerator`1.get_Current\"]() : undefined;\n return { done: !hasNext, value: current };\n },\n };\n}\nexport function enumerableToIterator(e) {\n return toIterator(toEnumerable(e).GetEnumerator());\n}\nexport class Comparer {\n constructor(f) {\n this.Compare = f || compare;\n }\n}\nexport function comparerFromEqualityComparer(comparer) {\n // Sometimes IEqualityComparer also implements IComparer\n if (isComparer(comparer)) {\n return new Comparer(comparer.Compare);\n }\n else {\n return new Comparer((x, y) => {\n const xhash = comparer.GetHashCode(x);\n const yhash = comparer.GetHashCode(y);\n if (xhash === yhash) {\n return comparer.Equals(x, y) ? 0 : -1;\n }\n else {\n return xhash < yhash ? -1 : 1;\n }\n });\n }\n}\nexport function assertEqual(actual, expected, msg) {\n if (!equals(actual, expected)) {\n throw Object.assign(new Error(msg || `Expected: ${expected} - Actual: ${actual}`), {\n actual,\n expected,\n });\n }\n}\nexport function assertNotEqual(actual, expected, msg) {\n if (equals(actual, expected)) {\n throw Object.assign(new Error(msg || `Expected: ${expected} - Actual: ${actual}`), {\n actual,\n expected,\n });\n }\n}\nexport class Lazy {\n constructor(factory) {\n this.factory = factory;\n this.isValueCreated = false;\n }\n get Value() {\n if (!this.isValueCreated) {\n this.createdValue = this.factory();\n this.isValueCreated = true;\n }\n return this.createdValue;\n }\n get IsValueCreated() {\n return this.isValueCreated;\n }\n}\nexport function lazyFromValue(v) {\n return new Lazy(() => v);\n}\nexport function padWithZeros(i, length) {\n return i.toString(10).padStart(length, \"0\");\n}\nexport function padLeftAndRightWithZeros(i, lengthLeft, lengthRight) {\n return i.toString(10).padStart(lengthLeft, \"0\").padEnd(lengthRight, \"0\");\n}\nexport function dateOffset(date) {\n const date1 = date;\n return typeof date1.offset === \"number\"\n ? date1.offset\n : (date.kind === 1 /* DateKind.UTC */\n ? 0 : date.getTimezoneOffset() * -60000);\n}\nexport function int16ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xFFFF + i + 1 : i;\n return i.toString(radix);\n}\nexport function int32ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xFFFFFFFF + i + 1 : i;\n return i.toString(radix);\n}\nexport function int64ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xffffffffffffffffn + i + 1n : i;\n return i.toString(radix);\n}\nexport class ObjectRef {\n static id(o) {\n if (!ObjectRef.idMap.has(o)) {\n ObjectRef.idMap.set(o, ++ObjectRef.count);\n }\n return ObjectRef.idMap.get(o);\n }\n}\nObjectRef.idMap = new WeakMap();\nObjectRef.count = 0;\nexport function stringHash(s) {\n let i = 0;\n let h = 5381;\n const len = s.length;\n while (i < len) {\n h = (h * 33) ^ s.charCodeAt(i++);\n }\n return h;\n}\nexport function numberHash(x) {\n return x * 2654435761 | 0;\n}\nexport function bigintHash(x) {\n return stringHash(x.toString(32));\n}\n// From https://stackoverflow.com/a/37449594\nexport function combineHashCodes(hashes) {\n let h1 = 0;\n const len = hashes.length;\n for (let i = 0; i < len; i++) {\n const h2 = hashes[i];\n h1 = ((h1 << 5) + h1) ^ h2;\n }\n return h1;\n}\nexport function physicalHash(x) {\n if (x == null) {\n return 0;\n }\n switch (typeof x) {\n case \"boolean\":\n return x ? 1 : 0;\n case \"number\":\n return numberHash(x);\n case \"bigint\":\n return bigintHash(x);\n case \"string\":\n return stringHash(x);\n default:\n return numberHash(ObjectRef.id(x));\n }\n}\nexport function identityHash(x) {\n if (isHashable(x)) {\n return x.GetHashCode();\n }\n else {\n return physicalHash(x);\n }\n}\nexport function dateHash(x) {\n return x.getTime();\n}\nexport function arrayHash(x) {\n const len = x.length;\n const hashes = new Array(len);\n for (let i = 0; i < len; i++) {\n hashes[i] = structuralHash(x[i]);\n }\n return combineHashCodes(hashes);\n}\nexport function structuralHash(x) {\n if (x == null) {\n return 0;\n }\n switch (typeof x) {\n case \"boolean\":\n return x ? 1 : 0;\n case \"number\":\n return numberHash(x);\n case \"bigint\":\n return bigintHash(x);\n case \"string\":\n return stringHash(x);\n default: {\n if (isHashable(x)) {\n return x.GetHashCode();\n }\n else if (isArrayLike(x)) {\n return arrayHash(x);\n }\n else if (x instanceof Date) {\n return dateHash(x);\n }\n else if (Object.getPrototypeOf(x)?.constructor === Object) {\n // TODO: check call-stack to prevent cyclic objects?\n const hashes = Object.values(x).map((v) => structuralHash(v));\n return combineHashCodes(hashes);\n }\n else {\n // Classes don't implement GetHashCode by default, but must use identity hashing\n return numberHash(ObjectRef.id(x));\n // return stringHash(String(x));\n }\n }\n }\n}\n// Intended for custom numeric types, like long or decimal\nexport function fastStructuralHash(x) {\n return stringHash(String(x));\n}\n// Intended for declared types that may or may not implement GetHashCode\nexport function safeHash(x) {\n // return x == null ? 0 : isHashable(x) ? x.GetHashCode() : numberHash(ObjectRef.id(x));\n return identityHash(x);\n}\nexport function equalArraysWith(x, y, eq) {\n if (x == null) {\n return y == null;\n }\n if (y == null) {\n return false;\n }\n if (x.length !== y.length) {\n return false;\n }\n for (let i = 0; i < x.length; i++) {\n if (!eq(x[i], y[i])) {\n return false;\n }\n }\n return true;\n}\nexport function equalArrays(x, y) {\n return equalArraysWith(x, y, equals);\n}\nfunction equalObjects(x, y) {\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y);\n if (xKeys.length !== yKeys.length) {\n return false;\n }\n xKeys.sort();\n yKeys.sort();\n for (let i = 0; i < xKeys.length; i++) {\n if (xKeys[i] !== yKeys[i] || !equals(x[xKeys[i]], y[yKeys[i]])) {\n return false;\n }\n }\n return true;\n}\nexport function physicalEquality(x, y) {\n return x === y;\n}\nexport function equals(x, y) {\n if (x === y) {\n return true;\n }\n else if (x == null) {\n return y == null;\n }\n else if (y == null) {\n return false;\n }\n else if (isEquatable(x)) {\n return x.Equals(y);\n }\n else if (isArrayLike(x)) {\n return isArrayLike(y) && equalArrays(x, y);\n }\n else if (typeof x !== \"object\") {\n return false;\n }\n else if (x instanceof Date) {\n return (y instanceof Date) && compareDates(x, y) === 0;\n }\n else {\n return Object.getPrototypeOf(x)?.constructor === Object && equalObjects(x, y);\n }\n}\nexport function compareDates(x, y) {\n let xtime;\n let ytime;\n // DateTimeOffset and DateTime deals with equality differently.\n if (\"offset\" in x && \"offset\" in y) {\n xtime = x.getTime();\n ytime = y.getTime();\n }\n else {\n xtime = x.getTime() + dateOffset(x);\n ytime = y.getTime() + dateOffset(y);\n }\n return xtime === ytime ? 0 : (xtime < ytime ? -1 : 1);\n}\nexport function comparePrimitives(x, y) {\n return x === y ? 0 : (x < y ? -1 : 1);\n}\nexport function compareArraysWith(x, y, comp) {\n if (x == null) {\n return y == null ? 0 : 1;\n }\n if (y == null) {\n return -1;\n }\n if (x.length !== y.length) {\n return x.length < y.length ? -1 : 1;\n }\n for (let i = 0, j = 0; i < x.length; i++) {\n j = comp(x[i], y[i]);\n if (j !== 0) {\n return j;\n }\n }\n return 0;\n}\nexport function compareArrays(x, y) {\n return compareArraysWith(x, y, compare);\n}\nfunction compareObjects(x, y) {\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y);\n if (xKeys.length !== yKeys.length) {\n return xKeys.length < yKeys.length ? -1 : 1;\n }\n xKeys.sort();\n yKeys.sort();\n for (let i = 0, j = 0; i < xKeys.length; i++) {\n const key = xKeys[i];\n if (key !== yKeys[i]) {\n return key < yKeys[i] ? -1 : 1;\n }\n else {\n j = compare(x[key], y[key]);\n if (j !== 0) {\n return j;\n }\n }\n }\n return 0;\n}\nexport function compare(x, y) {\n if (x === y) {\n return 0;\n }\n else if (x == null) {\n return y == null ? 0 : -1;\n }\n else if (y == null) {\n return 1;\n }\n else if (isComparable(x)) {\n return x.CompareTo(y);\n }\n else if (isArrayLike(x)) {\n return isArrayLike(y) ? compareArrays(x, y) : -1;\n }\n else if (typeof x !== \"object\") {\n return x < y ? -1 : 1;\n }\n else if (x instanceof Date) {\n return y instanceof Date ? compareDates(x, y) : -1;\n }\n else {\n return Object.getPrototypeOf(x)?.constructor === Object ? compareObjects(x, y) : -1;\n }\n}\nexport function min(comparer, x, y) {\n return comparer(x, y) < 0 ? x : y;\n}\nexport function max(comparer, x, y) {\n return comparer(x, y) > 0 ? x : y;\n}\nexport function clamp(comparer, value, min, max) {\n return (comparer(value, min) < 0) ? min : (comparer(value, max) > 0) ? max : value;\n}\nexport function createAtom(value) {\n let atom = value;\n return (...args) => {\n if (args.length === 0) {\n return atom;\n }\n else {\n atom = args[0];\n }\n };\n}\nexport function createObj(fields) {\n const obj = {};\n for (const kv of fields) {\n obj[kv[0]] = kv[1];\n }\n return obj;\n}\nexport function jsOptions(mutator) {\n const opts = {};\n mutator(opts);\n return opts;\n}\nexport function round(value, digits = 0) {\n const m = Math.pow(10, digits);\n const n = +(digits ? value * m : value).toFixed(8);\n const i = Math.floor(n);\n const f = n - i;\n const e = 1e-8;\n const r = (f > 0.5 - e && f < 0.5 + e) ? ((i % 2 === 0) ? i : i + 1) : Math.round(n);\n return digits ? r / m : r;\n}\nexport function sign(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n}\nexport function unescapeDataString(s) {\n // https://stackoverflow.com/a/4458580/524236\n return decodeURIComponent((s).replace(/\\+/g, \"%20\"));\n}\nexport function escapeDataString(s) {\n return encodeURIComponent(s).replace(/!/g, \"%21\")\n .replace(/'/g, \"%27\")\n .replace(/\\(/g, \"%28\")\n .replace(/\\)/g, \"%29\")\n .replace(/\\*/g, \"%2A\");\n}\nexport function escapeUriString(s) {\n return encodeURI(s);\n}\n// ICollection.Clear and Count members can be called on Arrays\n// or Dictionaries so we need a runtime check (see #1120)\nexport function count(col) {\n if (isArrayLike(col)) {\n return col.length;\n }\n else {\n let count = 0;\n for (const _ of col) {\n count++;\n }\n return count;\n }\n}\nexport function clear(col) {\n if (isArrayLike(col)) {\n col.splice(0);\n }\n else {\n col.clear();\n }\n}\nconst curried = new WeakMap();\nexport function uncurry2(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2) => f(a1)(a2);\n curried.set(f2, f);\n return f2;\n}\nexport function curry2(f) {\n return curried.get(f) ?? ((a1) => (a2) => f(a1, a2));\n}\nexport function uncurry3(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3) => f(a1)(a2)(a3);\n curried.set(f2, f);\n return f2;\n}\nexport function curry3(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => f(a1, a2, a3));\n}\nexport function uncurry4(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4) => f(a1)(a2)(a3)(a4);\n curried.set(f2, f);\n return f2;\n}\nexport function curry4(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => f(a1, a2, a3, a4));\n}\nexport function uncurry5(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5) => f(a1)(a2)(a3)(a4)(a5);\n curried.set(f2, f);\n return f2;\n}\nexport function curry5(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => f(a1, a2, a3, a4, a5));\n}\nexport function uncurry6(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6) => f(a1)(a2)(a3)(a4)(a5)(a6);\n curried.set(f2, f);\n return f2;\n}\nexport function curry6(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => f(a1, a2, a3, a4, a5, a6));\n}\nexport function uncurry7(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7);\n curried.set(f2, f);\n return f2;\n}\nexport function curry7(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => f(a1, a2, a3, a4, a5, a6, a7));\n}\nexport function uncurry8(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8);\n curried.set(f2, f);\n return f2;\n}\nexport function curry8(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => f(a1, a2, a3, a4, a5, a6, a7, a8));\n}\nexport function uncurry9(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9);\n curried.set(f2, f);\n return f2;\n}\nexport function curry9(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9));\n}\nexport function uncurry10(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10);\n curried.set(f2, f);\n return f2;\n}\nexport function curry10(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10));\n}\nexport function uncurry11(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11);\n curried.set(f2, f);\n return f2;\n}\nexport function curry11(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11));\n}\nexport function uncurry12(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12);\n curried.set(f2, f);\n return f2;\n}\nexport function curry12(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12));\n}\nexport function uncurry13(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13);\n curried.set(f2, f);\n return f2;\n}\nexport function curry13(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13));\n}\nexport function uncurry14(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14);\n curried.set(f2, f);\n return f2;\n}\nexport function curry14(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14));\n}\nexport function uncurry15(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15);\n curried.set(f2, f);\n return f2;\n}\nexport function curry15(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15));\n}\nexport function uncurry16(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16);\n curried.set(f2, f);\n return f2;\n}\nexport function curry16(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16));\n}\nexport function uncurry17(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17);\n curried.set(f2, f);\n return f2;\n}\nexport function curry17(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => (a17) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17));\n}\nexport function uncurry18(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17)(a18);\n curried.set(f2, f);\n return f2;\n}\nexport function curry18(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => (a17) => (a18) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18));\n}\nexport function uncurry19(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17)(a18)(a19);\n curried.set(f2, f);\n return f2;\n}\nexport function curry19(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => (a17) => (a18) => (a19) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19));\n}\nexport function uncurry20(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17)(a18)(a19)(a20);\n curried.set(f2, f);\n return f2;\n}\nexport function curry20(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => (a17) => (a18) => (a19) => (a20) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20));\n}\n// More performant method to copy arrays, see #2352\nexport function copyToArray(source, sourceIndex, target, targetIndex, count) {\n if (ArrayBuffer.isView(source) && ArrayBuffer.isView(target)) {\n target.set(source.subarray(sourceIndex, sourceIndex + count), targetIndex);\n }\n else {\n for (let i = 0; i < count; ++i) {\n target[targetIndex + i] = source[sourceIndex + i];\n }\n }\n}\n","import { combineHashCodes, compare, compareArrays, equalArrays, equals, sameConstructor, numberHash, structuralHash } from \"./Util.js\";\nexport function seqToString(self) {\n let count = 0;\n let str = \"[\";\n for (const x of self) {\n if (count === 0) {\n str += toString(x);\n }\n else if (count === 100) {\n str += \"; ...\";\n break;\n }\n else {\n str += \"; \" + toString(x);\n }\n count++;\n }\n return str + \"]\";\n}\nexport function toString(x, callStack = 0) {\n if (x != null && typeof x === \"object\") {\n if (typeof x.toString === \"function\") {\n return x.toString();\n }\n else if (Symbol.iterator in x) {\n return seqToString(x);\n }\n else { // TODO: Date?\n const cons = Object.getPrototypeOf(x)?.constructor;\n return cons === Object && callStack < 10\n // Same format as recordToString\n ? \"{ \" + Object.entries(x).map(([k, v]) => k + \" = \" + toString(v, callStack + 1)).join(\"\\n \") + \" }\"\n : cons?.name ?? \"\";\n }\n }\n return String(x);\n}\nexport function unionToString(name, fields) {\n if (fields.length === 0) {\n return name;\n }\n else {\n let fieldStr;\n let withParens = true;\n if (fields.length === 1) {\n fieldStr = toString(fields[0]);\n withParens = fieldStr.indexOf(\" \") >= 0;\n }\n else {\n fieldStr = fields.map((x) => toString(x)).join(\", \");\n }\n return name + (withParens ? \" (\" : \" \") + fieldStr + (withParens ? \")\" : \"\");\n }\n}\nexport class Union {\n get name() {\n return this.cases()[this.tag];\n }\n toJSON() {\n return this.fields.length === 0 ? this.name : [this.name].concat(this.fields);\n }\n toString() {\n return unionToString(this.name, this.fields);\n }\n GetHashCode() {\n const hashes = this.fields.map((x) => structuralHash(x));\n hashes.splice(0, 0, numberHash(this.tag));\n return combineHashCodes(hashes);\n }\n Equals(other) {\n if (this === other) {\n return true;\n }\n else if (!sameConstructor(this, other)) {\n return false;\n }\n else if (this.tag === other.tag) {\n return equalArrays(this.fields, other.fields);\n }\n else {\n return false;\n }\n }\n CompareTo(other) {\n if (this === other) {\n return 0;\n }\n else if (!sameConstructor(this, other)) {\n return -1;\n }\n else if (this.tag === other.tag) {\n return compareArrays(this.fields, other.fields);\n }\n else {\n return this.tag < other.tag ? -1 : 1;\n }\n }\n}\nfunction recordToJSON(self) {\n const o = {};\n const keys = Object.keys(self);\n for (let i = 0; i < keys.length; i++) {\n o[keys[i]] = self[keys[i]];\n }\n return o;\n}\nfunction recordToString(self) {\n return \"{ \" + Object.entries(self).map(([k, v]) => k + \" = \" + toString(v)).join(\"\\n \") + \" }\";\n}\nfunction recordGetHashCode(self) {\n const hashes = Object.values(self).map((v) => structuralHash(v));\n return combineHashCodes(hashes);\n}\nfunction recordEquals(self, other) {\n if (self === other) {\n return true;\n }\n else if (!sameConstructor(self, other)) {\n return false;\n }\n else {\n const thisNames = Object.keys(self);\n for (let i = 0; i < thisNames.length; i++) {\n if (!equals(self[thisNames[i]], other[thisNames[i]])) {\n return false;\n }\n }\n return true;\n }\n}\nfunction recordCompareTo(self, other) {\n if (self === other) {\n return 0;\n }\n else if (!sameConstructor(self, other)) {\n return -1;\n }\n else {\n const thisNames = Object.keys(self);\n for (let i = 0; i < thisNames.length; i++) {\n const result = compare(self[thisNames[i]], other[thisNames[i]]);\n if (result !== 0) {\n return result;\n }\n }\n return 0;\n }\n}\nexport class Record {\n toJSON() { return recordToJSON(this); }\n toString() { return recordToString(this); }\n GetHashCode() { return recordGetHashCode(this); }\n Equals(other) { return recordEquals(this, other); }\n CompareTo(other) { return recordCompareTo(this, other); }\n}\nexport class FSharpRef {\n get contents() {\n return this.getter();\n }\n set contents(v) {\n this.setter(v);\n }\n constructor(contentsOrGetter, setter) {\n if (typeof setter === \"function\") {\n this.getter = contentsOrGetter;\n this.setter = setter;\n }\n else {\n this.getter = () => contentsOrGetter;\n this.setter = (v) => { contentsOrGetter = v; };\n }\n }\n}\n// EXCEPTIONS\n// Exception is intentionally not derived from Error, for performance reasons (see #2160)\nexport class Exception {\n constructor(message) {\n this.message = message;\n }\n}\nexport function isException(x) {\n return x instanceof Exception || x instanceof Error;\n}\nexport function isPromise(x) {\n return x instanceof Promise;\n}\nexport function ensureErrorOrException(e) {\n // Exceptionally admitting promises as errors for compatibility with React.suspense (see #3298)\n return (isException(e) || isPromise(e)) ? e : new Error(String(e));\n}\nexport class FSharpException extends Exception {\n toJSON() { return recordToJSON(this); }\n toString() { return recordToString(this); }\n GetHashCode() { return recordGetHashCode(this); }\n Equals(other) { return recordEquals(this, other); }\n CompareTo(other) { return recordCompareTo(this, other); }\n}\nexport class MatchFailureException extends FSharpException {\n constructor(arg1, arg2, arg3) {\n super();\n this.arg1 = arg1;\n this.arg2 = arg2 | 0;\n this.arg3 = arg3 | 0;\n this.message = \"The match cases were incomplete\";\n }\n}\nexport class Attribute {\n}\n","// Adapted from https://github.com/MikeMcl/big.js/blob/0f94dc9110d55c4f324a47ba6a2e832ce23ac589/big.mjs\n/* tslint:disable */\nvar P = {};\n/*\n * big.js v6.0.3\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\n * Copyright (c) 2020 Michael Mclaughlin\n * https://github.com/MikeMcl/big.js/LICENCE.md\n */\n/************************************** EDITABLE DEFAULTS *****************************************/\n// The default values below must be integers within the stated ranges.\n/*\n * The maximum number of decimal places (DP) of the results of operations involving division:\n * div and sqrt, and pow with negative exponents.\n */\nvar DP = 28, // 0 to MAX_DP\n/*\n * The rounding mode (RM) used when rounding to the above decimal places.\n *\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\n * 3 Away from zero. (ROUND_UP)\n */\nRM = 1, // 0, 1, 2 or 3\n// The maximum value of DP and Big.DP.\nMAX_DP = 1E6, // 0 to 1000000\n// The maximum magnitude of the exponent argument to the pow method.\nMAX_POWER = 1E6, // 1 to 1000000\n/*\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\n * (JavaScript numbers: -7)\n * -1000000 is the minimum recommended exponent value of a Big.\n */\nNE = -29, // 0 to -1000000\n/*\n * The positive exponent (PE) at and above which toString returns exponential notation.\n * (JavaScript numbers: 21)\n * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.\n */\nPE = 29, // 0 to 1000000\n/*\n * When true, an error will be thrown if a primitive number is passed to the Big constructor,\n * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a\n * primitive number without a loss of precision.\n */\nSTRICT = false, // true or false\n/**************************************************************************************************/\n// Error messages.\nNAME = '[big.js] ', INVALID = NAME + 'Invalid ', INVALID_DP = INVALID + 'decimal places', INVALID_RM = INVALID + 'rounding mode', DIV_BY_ZERO = NAME + 'Division by zero', UNDEFINED = void 0, NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\n/*\n * Create and return a Big constructor.\n */\nfunction _Big_() {\n /*\n * The Big constructor and exported function.\n * Create and return a new instance of a Big number object.\n *\n * n {number|string|Big} A numeric value.\n */\n function Big(n) {\n var x = this;\n // Enable constructor usage without new.\n if (!(x instanceof Big))\n return n === UNDEFINED ? _Big_() : new Big(n);\n // Duplicate.\n if (n instanceof Big) {\n x.s = n.s;\n x.e = n.e;\n x.c = n.c.slice();\n normalize(x);\n }\n else {\n if (typeof n !== 'string') {\n if (Big.strict === true) {\n throw TypeError(INVALID + 'number');\n }\n // Minus zero?\n n = n === 0 && 1 / n < 0 ? '-0' : String(n);\n }\n parse(x, n);\n }\n // Retain a reference to this Big constructor.\n // Shadow Big.prototype.constructor which points to Object.\n x.constructor = Big;\n }\n Big.prototype = P;\n Big.DP = DP;\n Big.RM = RM;\n Big.NE = NE;\n Big.PE = PE;\n Big.strict = STRICT;\n return Big;\n}\nfunction normalize(x) {\n // x = round(x, DP, 0);\n if (x.c.length > 1 && !x.c[0]) {\n let i = x.c.findIndex(x => x);\n x.c = x.c.slice(i);\n x.e = x.e - i;\n }\n}\n/*\n * Parse the number or string value passed to a Big constructor.\n *\n * x {Big} A Big number instance.\n * n {number|string} A numeric value.\n */\nfunction parse(x, n) {\n var e, i, nl;\n if (!NUMERIC.test(n)) {\n throw Error(INVALID + 'number');\n }\n // Determine sign.\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\n // Decimal point?\n if ((e = n.indexOf('.')) > -1)\n n = n.replace('.', '');\n // Exponential form?\n if ((i = n.search(/e/i)) > 0) {\n // Determine exponent.\n if (e < 0)\n e = i;\n e += +n.slice(i + 1);\n n = n.substring(0, i);\n }\n else if (e < 0) {\n // Integer.\n e = n.length;\n }\n nl = n.length;\n // Determine leading zeros before decimal point.\n for (i = 0; i < e && i < nl && n.charAt(i) == '0';)\n ++i;\n // original version (ignores decimal point).\n // // Determine leading zeros.\n // for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\n if (i == nl) {\n // Zero.\n x.c = [x.e = 0];\n }\n else {\n x.e = e - i - 1;\n x.c = [];\n // Convert string to array of digits without leading zeros\n for (e = 0; i < nl;)\n x.c[e++] = +n.charAt(i++);\n // older version (doesn't keep trailing zeroes).\n // // Determine trailing zeros.\n // for (; nl > 0 && n.charAt(--nl) == '0';);\n // // Convert string to array of digits without leading/trailing zeros.\n // for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\n }\n x = round(x, Big.DP + 1, Big.RM);\n return x;\n}\n/*\n * Round Big x to a maximum of sd significant digits using rounding mode rm.\n *\n * x {Big} The Big to round.\n * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.\n * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\n * [more] {boolean} Whether the result of division was truncated.\n */\nfunction round(x, sd, rm, more) {\n var xc = x.c;\n if (rm === UNDEFINED)\n rm = Big.RM;\n if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {\n throw Error(INVALID_RM);\n }\n if (sd < 1) {\n more =\n rm === 3 && (more || !!xc[0]) || sd === 0 && (rm === 1 && xc[0] >= 5 ||\n rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED)));\n xc.length = 1;\n if (more) {\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\n x.e = x.e - sd + 1;\n xc[0] = 1;\n }\n else {\n // Zero.\n xc[0] = x.e = 0;\n }\n }\n else if (sd < xc.length) {\n // xc[sd] is the digit after the digit that may be rounded up.\n const isZero = xc.findIndex((xci, idx) => idx >= sd && xci > 0) < 0;\n more =\n rm === 1 && xc[sd] >= 5 ||\n rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&\n (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||\n rm === 3 && (more || !isZero);\n // Remove any digits after the required precision.\n xc.length = sd--;\n // Round up?\n if (more) {\n // Rounding up may mean the previous digit has to be rounded up.\n for (; ++xc[sd] > 9;) {\n xc[sd] = 0;\n if (!sd--) {\n ++x.e;\n xc.unshift(1);\n }\n }\n }\n // Remove trailing zeros.\n for (sd = xc.length; !xc[--sd];)\n xc.pop();\n }\n return x;\n}\n/*\n * Return a string representing the value of Big x in normal or exponential notation.\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\n */\nfunction stringify(x, doExponential, isNonzero) {\n var e = x.e, s = x.c.join(''), n = s.length;\n // Exponential notation?\n if (doExponential) {\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\n // Normal notation.\n }\n else if (e < 0) {\n for (; ++e;)\n s = '0' + s;\n s = '0.' + s;\n }\n else if (e > 0) {\n if (++e > n) {\n for (e -= n; e--;)\n s += '0';\n }\n else if (e < n) {\n s = s.slice(0, e) + '.' + s.slice(e);\n }\n }\n else if (n > 1) {\n s = s.charAt(0) + '.' + s.slice(1);\n }\n return x.s < 0 && isNonzero ? '-' + s : s;\n}\n// Prototype/instance methods\n/*\n * Return a new Big whose value is the absolute value of this Big.\n */\nP.abs = function () {\n var x = new this.constructor(this);\n x.s = 1;\n return x;\n};\n/*\n * Return 1 if the value of this Big is greater than the value of Big y,\n * -1 if the value of this Big is less than the value of Big y, or\n * 0 if they have the same value.\n */\nP.cmp = function (y) {\n var isneg, Big = this.constructor, x = new Big(this), y = new Big(y), xc = x.c, yc = y.c, i = x.s, j = y.s, k = x.e, l = y.e;\n // Either zero?\n if (!xc[0] || !yc[0])\n return !xc[0] ? !yc[0] ? 0 : -j : i;\n // Signs differ?\n if (i != j)\n return i;\n isneg = i < 0;\n // Compare exponents.\n if (k != l)\n return k > l ^ isneg ? 1 : -1;\n // Compare digit by digit.\n j = Math.max(xc.length, yc.length);\n for (i = 0; i < j; i++) {\n k = i < xc.length ? xc[i] : 0;\n l = i < yc.length ? yc[i] : 0;\n if (k != l)\n return k > l ^ isneg ? 1 : -1;\n }\n return 0;\n // original version (doesn't compare well trailing zeroes, e.g. 1.0 with 1.00)\n // j = (k = xc.length) < (l = yc.length) ? k : l;\n // // Compare digit by digit.\n // for (i = -1; ++i < j;) {\n // if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\n // }\n // // Compare lengths.\n // return k == l ? 0 : k > l ^ isneg ? 1 : -1;\n};\n/*\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\n */\nP.div = function (y) {\n var Big = this.constructor, x = new Big(this), y = new Big(y), a = x.c, // dividend\n b = y.c, // divisor\n k = x.s == y.s ? 1 : -1, dp = Big.DP;\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\n throw Error(INVALID_DP);\n }\n // Divisor is zero?\n if (!b[0]) {\n throw Error(DIV_BY_ZERO);\n }\n // Dividend is 0? Return +-0.\n if (!a[0]) {\n y.s = k;\n y.c = [y.e = 0];\n return y;\n }\n var bl, bt, n, cmp, ri, bz = b.slice(), ai = bl = b.length, al = a.length, r = a.slice(0, bl), // remainder\n rl = r.length, q = y, // quotient\n qc = q.c = [], qi = 0, p = dp + (q.e = x.e - y.e) + 1; // precision of the result\n q.s = k;\n k = p < 0 ? 0 : p;\n // Create version of divisor with leading zero.\n bz.unshift(0);\n // Add zeros to make remainder as long as divisor.\n for (; rl++ < bl;)\n r.push(0);\n do {\n // n is how many times the divisor goes into current remainder.\n for (n = 0; n < 10; n++) {\n // Compare divisor and remainder.\n if (bl != (rl = r.length)) {\n cmp = bl > rl ? 1 : -1;\n }\n else {\n for (ri = -1, cmp = 0; ++ri < bl;) {\n if (b[ri] != r[ri]) {\n cmp = b[ri] > r[ri] ? 1 : -1;\n break;\n }\n }\n }\n // If divisor < remainder, subtract divisor from remainder.\n if (cmp < 0) {\n // Remainder can't be more than 1 digit longer than divisor.\n // Equalise lengths using divisor with extra leading zero?\n for (bt = rl == bl ? b : bz; rl;) {\n if (r[--rl] < bt[rl]) {\n ri = rl;\n for (; ri && !r[--ri];)\n r[ri] = 9;\n --r[ri];\n r[rl] += 10;\n }\n r[rl] -= bt[rl];\n }\n for (; !r[0];)\n r.shift();\n }\n else {\n break;\n }\n }\n // Add the digit n to the result array.\n qc[qi++] = cmp ? n : ++n;\n // Update the remainder.\n if (r[0] && cmp)\n r[rl] = a[ai] || 0;\n else\n r = [a[ai]];\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\n // Leading zero? Do not remove if result is simply zero (qi == 1).\n if (!qc[0] && qi != 1) {\n // There can't be more than one zero.\n qc.shift();\n q.e--;\n p--;\n }\n // Round?\n if (qi > p)\n round(q, p, Big.RM, r[0] !== UNDEFINED);\n return q;\n};\n/*\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\n */\nP.eq = function (y) {\n return this.cmp(y) === 0;\n};\n/*\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\n * false.\n */\nP.gt = function (y) {\n return this.cmp(y) > 0;\n};\n/*\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\n * return false.\n */\nP.gte = function (y) {\n return this.cmp(y) > -1;\n};\n/*\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\n */\nP.lt = function (y) {\n return this.cmp(y) < 0;\n};\n/*\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\n * return false.\n */\nP.lte = function (y) {\n return this.cmp(y) < 1;\n};\n/*\n * Return a new Big whose value is the value of this Big minus the value of Big y.\n */\nP.minus = P.sub = function (y) {\n var i, j, t, xlty, Big = this.constructor, x = new Big(this), y = new Big(y), a = x.s, b = y.s;\n // Signs differ?\n if (a != b) {\n y.s = -b;\n return x.plus(y);\n }\n var xc = x.c.slice(), xe = x.e, yc = y.c, ye = y.e;\n // Either zero?\n if (!xc[0] || !yc[0]) {\n if (yc[0]) {\n y.s = -b;\n }\n else if (xc[0]) {\n y = new Big(x);\n }\n else {\n y.s = 1;\n }\n return y;\n }\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\n if (a = xe - ye) {\n if (xlty = a < 0) {\n a = -a;\n t = xc;\n }\n else {\n ye = xe;\n t = yc;\n }\n t.reverse();\n for (b = a; b--;)\n t.push(0);\n t.reverse();\n }\n else {\n // Exponents equal. Check digit by digit.\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\n for (a = b = 0; b < j; b++) {\n if (xc[b] != yc[b]) {\n xlty = xc[b] < yc[b];\n break;\n }\n }\n }\n // x < y? Point xc to the array of the bigger number.\n if (xlty) {\n t = xc;\n xc = yc;\n yc = t;\n y.s = -y.s;\n }\n /*\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\n * needs to start at yc.length.\n */\n if ((b = (j = yc.length) - (i = xc.length)) > 0)\n for (; b--;)\n xc[i++] = 0;\n // Subtract yc from xc.\n for (b = i; j > a;) {\n if (xc[--j] < yc[j]) {\n for (i = j; i && !xc[--i];)\n xc[i] = 9;\n --xc[i];\n xc[j] += 10;\n }\n xc[j] -= yc[j];\n }\n // Remove trailing zeros.\n for (; xc[--b] === 0;)\n xc.pop();\n // Remove leading zeros and adjust exponent accordingly.\n for (; xc[0] === 0;) {\n xc.shift();\n --ye;\n }\n if (!xc[0]) {\n // n - n = +0\n y.s = 1;\n // Result must be zero.\n xc = [ye = 0];\n }\n y.c = xc;\n y.e = ye;\n return y;\n};\n/*\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\n */\nP.mod = function (y) {\n var ygtx, Big = this.constructor, x = new Big(this), y = new Big(y), a = x.s, b = y.s;\n if (!y.c[0]) {\n throw Error(DIV_BY_ZERO);\n }\n x.s = y.s = 1;\n ygtx = y.cmp(x) == 1;\n x.s = a;\n y.s = b;\n if (ygtx)\n return new Big(x);\n a = Big.DP;\n b = Big.RM;\n Big.DP = Big.RM = 0;\n x = x.div(y);\n Big.DP = a;\n Big.RM = b;\n return this.minus(x.times(y));\n};\n/*\n * Return a new Big whose value is the value of this Big plus the value of Big y.\n */\nP.plus = P.add = function (y) {\n var e, k, t, Big = this.constructor, x = new Big(this), y = new Big(y);\n // Signs differ?\n if (x.s != y.s) {\n y.s = -y.s;\n return x.minus(y);\n }\n var xe = x.e, xc = x.c, ye = y.e, yc = y.c;\n // Either zero?\n if (!xc[0] || !yc[0]) {\n if (!yc[0]) {\n if (xc[0]) {\n y = new Big(x);\n }\n else {\n y.s = x.s;\n }\n }\n return y;\n }\n xc = xc.slice();\n // Prepend zeros to equalise exponents.\n // Note: reverse faster than unshifts.\n if (e = xe - ye) {\n if (e > 0) {\n ye = xe;\n t = yc;\n }\n else {\n e = -e;\n t = xc;\n }\n t.reverse();\n for (; e--;)\n t.push(0);\n t.reverse();\n }\n // Point xc to the longer array.\n if (xc.length - yc.length < 0) {\n t = yc;\n yc = xc;\n xc = t;\n }\n e = yc.length;\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\n for (k = 0; e; xc[e] %= 10)\n k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\n if (k) {\n xc.unshift(k);\n ++ye;\n }\n // Remove trailing zeros.\n for (e = xc.length; xc[--e] === 0;)\n xc.pop();\n y.c = xc;\n y.e = ye;\n return y;\n};\n/*\n * Return a Big whose value is the value of this Big raised to the power n.\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\n * mode Big.RM.\n *\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\n */\nP.pow = function (n) {\n var Big = this.constructor, x = new Big(this), y = new Big('1'), one = new Big('1'), isneg = n < 0;\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {\n throw Error(INVALID + 'exponent');\n }\n if (isneg)\n n = -n;\n for (;;) {\n if (n & 1)\n y = y.times(x);\n n >>= 1;\n if (!n)\n break;\n x = x.times(x);\n }\n return isneg ? one.div(y) : y;\n};\n/*\n * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd\n * significant digits using rounding mode rm, or Big.RM if rm is not specified.\n *\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\n */\nP.prec = function (sd, rm) {\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\n throw Error(INVALID + 'precision');\n }\n return round(new this.constructor(this), sd, rm);\n};\n/*\n * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places\n * using rounding mode rm, or Big.RM if rm is not specified.\n * If dp is negative, round to an integer which is a multiple of 10**-dp.\n * If dp is not specified, round to 0 decimal places.\n *\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\n */\nP.round = function (dp, rm) {\n if (dp === UNDEFINED)\n dp = 0;\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {\n throw Error(INVALID_DP);\n }\n return round(new this.constructor(this), dp + this.e + 1, rm);\n};\n/*\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\n */\nP.sqrt = function () {\n var r, c, t, Big = this.constructor, x = new Big(this), s = x.s, e = x.e, half = new Big('0.5');\n // Zero?\n if (!x.c[0])\n return new Big(x);\n // Negative?\n if (s < 0) {\n throw Error(NAME + 'No square root');\n }\n // Estimate.\n s = Math.sqrt(x + '');\n // Math.sqrt underflow/overflow?\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\n if (s === 0 || s === 1 / 0) {\n c = x.c.join('');\n if (!(c.length + e & 1))\n c += '0';\n s = Math.sqrt(c);\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\n r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\n }\n else {\n r = new Big(s + '');\n }\n e = r.e + (Big.DP += 4);\n // Newton-Raphson iteration.\n do {\n t = r;\n r = half.times(t.plus(x.div(t)));\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\n return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);\n};\n/*\n * Return a new Big whose value is the value of this Big times the value of Big y.\n */\nP.times = P.mul = function (y) {\n var c, Big = this.constructor, x = new Big(this), y = new Big(y), xc = x.c, yc = y.c, a = xc.length, b = yc.length, i = x.e, j = y.e;\n // Determine sign of result.\n y.s = x.s == y.s ? 1 : -1;\n // Return signed 0 if either 0.\n if (!xc[0] || !yc[0]) {\n y.c = [y.e = 0];\n return y;\n }\n // Initialise exponent of result as x.e + y.e.\n y.e = i + j;\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\n if (a < b) {\n c = xc;\n xc = yc;\n yc = c;\n j = a;\n a = b;\n b = j;\n }\n // Initialise coefficient array of result with zeros.\n for (c = new Array(j = a + b); j--;)\n c[j] = 0;\n // Multiply.\n // i is initially xc.length.\n for (i = b; i--;) {\n b = 0;\n // a is yc.length.\n for (j = a + i; j > i;) {\n // Current sum of products at this digit position, plus carry.\n b = c[j] + yc[i] * xc[j - i - 1] + b;\n c[j--] = b % 10;\n // carry\n b = b / 10 | 0;\n }\n c[j] = b;\n }\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\n if (b)\n ++y.e;\n else\n c.shift();\n // Remove trailing zeros.\n for (i = c.length; !c[--i];)\n c.pop();\n y.c = c;\n return y;\n};\n/*\n * Return a string representing the value of this Big in exponential notation rounded to dp fixed\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\n *\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\n */\nP.toExponential = function (dp, rm) {\n var x = this, n = x.c[0];\n if (dp !== UNDEFINED) {\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\n throw Error(INVALID_DP);\n }\n x = round(new x.constructor(x), ++dp, rm);\n for (; x.c.length < dp;)\n x.c.push(0);\n }\n return stringify(x, true, !!n);\n};\n/*\n * Return a string representing the value of this Big in normal notation rounded to dp fixed\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\n *\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\n *\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\n */\nP.toFixed = function (dp, rm) {\n var x = this, n = x.c[0];\n if (dp !== UNDEFINED) {\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\n throw Error(INVALID_DP);\n }\n x = round(new x.constructor(x), dp + x.e + 1, rm);\n // x.e may have changed if the value is rounded up.\n for (dp = dp + x.e + 1; x.c.length < dp;)\n x.c.push(0);\n }\n return stringify(x, false, !!n);\n};\n/*\n * Return a string representing the value of this Big.\n * Return exponential notation if this Big has a positive exponent equal to or greater than\n * Big.PE, or a negative exponent equal to or less than Big.NE.\n * Omit the sign for negative zero.\n */\nP.toJSON = P.toString = function () {\n var x = this, Big = x.constructor;\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);\n};\n/*\n * Return the value of this Big as a primitve number.\n */\nP.toNumber = function () {\n var n = Number(stringify(this, true, true));\n if (this.constructor.strict === true && !this.eq(n.toString())) {\n throw Error(NAME + 'Imprecise conversion');\n }\n return n;\n};\n/*\n * Return a string representing the value of this Big rounded to sd significant digits using\n * rounding mode rm, or Big.RM if rm is not specified.\n * Use exponential notation if sd is less than the number of digits necessary to represent\n * the integer part of the value in normal notation.\n *\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\n */\nP.toPrecision = function (sd, rm) {\n var x = this, Big = x.constructor, n = x.c[0];\n if (sd !== UNDEFINED) {\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\n throw Error(INVALID + 'precision');\n }\n x = round(new Big(x), sd, rm);\n for (; x.c.length < sd;)\n x.c.push(0);\n }\n return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);\n};\n/*\n * Return a string representing the value of this Big.\n * Return exponential notation if this Big has a positive exponent equal to or greater than\n * Big.PE, or a negative exponent equal to or less than Big.NE.\n * Include the sign for negative zero.\n */\nP.valueOf = function () {\n var x = this, Big = x.constructor;\n if (Big.strict === true) {\n throw Error(NAME + 'valueOf disallowed');\n }\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);\n};\n// Export\n/**\n * @type object\n */\nexport var Big = _Big_();\n/// \nexport default Big;\n","export const symbol = Symbol(\"numeric\");\nexport function isNumeric(x) {\n return typeof x === \"number\" || typeof x === \"bigint\" || x?.[symbol];\n}\nexport function compare(x, y) {\n if (typeof x === \"number\") {\n return x < y ? -1 : (x > y ? 1 : 0);\n }\n else if (typeof x === \"bigint\") {\n return x < y ? -1 : (x > y ? 1 : 0);\n }\n else {\n return x.CompareTo(y);\n }\n}\nexport function multiply(x, y) {\n if (typeof x === \"number\") {\n return x * y;\n }\n else if (typeof x === \"bigint\") {\n return x * BigInt(y);\n }\n else {\n return x[symbol]().multiply(y);\n }\n}\nexport function toFixed(x, dp) {\n if (typeof x === \"number\") {\n return x.toFixed(dp);\n }\n else if (typeof x === \"bigint\") {\n return x;\n }\n else {\n return x[symbol]().toFixed(dp);\n }\n}\nexport function toPrecision(x, sd) {\n if (typeof x === \"number\") {\n return x.toPrecision(sd);\n }\n else if (typeof x === \"bigint\") {\n return x;\n }\n else {\n return x[symbol]().toPrecision(sd);\n }\n}\nexport function toExponential(x, dp) {\n if (typeof x === \"number\") {\n return x.toExponential(dp);\n }\n else if (typeof x === \"bigint\") {\n return x;\n }\n else {\n return x[symbol]().toExponential(dp);\n }\n}\nexport function toHex(x) {\n if (typeof x === \"number\") {\n return (Number(x) >>> 0).toString(16);\n }\n else if (typeof x === \"bigint\") {\n // TODO: properly handle other bit sizes\n return BigInt.asUintN(64, x).toString(16);\n }\n else {\n return x[symbol]().toHex();\n }\n}\n","import Decimal from \"./lib/big.js\";\nimport { symbol } from \"./Numeric.js\";\nimport { FSharpRef } from \"./Types.js\";\nimport { combineHashCodes } from \"./Util.js\";\nDecimal.prototype.GetHashCode = function () {\n return combineHashCodes([this.s, this.e].concat(this.c));\n};\nDecimal.prototype.Equals = function (x) {\n return !this.cmp(x);\n};\nDecimal.prototype.CompareTo = function (x) {\n return this.cmp(x);\n};\nDecimal.prototype[symbol] = function () {\n const _this = this;\n return {\n multiply: (y) => _this.mul(y),\n toPrecision: (sd) => _this.toPrecision(sd),\n toExponential: (dp) => _this.toExponential(dp),\n toFixed: (dp) => _this.toFixed(dp),\n toHex: () => (Number(_this) >>> 0).toString(16),\n };\n};\nexport default Decimal;\nexport const get_Zero = new Decimal(0);\nexport const get_One = new Decimal(1);\nexport const get_MinusOne = new Decimal(-1);\nexport const get_MaxValue = new Decimal(\"79228162514264337593543950335\");\nexport const get_MinValue = new Decimal(\"-79228162514264337593543950335\");\nexport function compare(x, y) {\n return x.cmp(y);\n}\nexport function equals(x, y) {\n return !x.cmp(y);\n}\nexport function abs(x) { return x.abs(); }\nexport function sign(x) { return x < get_Zero ? -1 : x > get_Zero ? 1 : 0; }\nexport function max(x, y) { return x > y ? x : y; }\nexport function min(x, y) { return x < y ? x : y; }\nexport function maxMagnitude(x, y) { return abs(x) > abs(y) ? x : y; }\nexport function minMagnitude(x, y) { return abs(x) < abs(y) ? x : y; }\nexport function clamp(x, min, max) {\n return x < min ? min : x > max ? max : x;\n}\nexport function round(x, digits = 0) {\n return x.round(digits, 2 /* ROUND_HALF_EVEN */);\n}\nexport function truncate(x) {\n return x.round(0, 0 /* ROUND_DOWN */);\n}\nexport function ceiling(x) {\n return x.round(0, x.cmp(0) >= 0 ? 3 /* ROUND_UP */ : 0 /* ROUND_DOWN */);\n}\nexport function floor(x) {\n return x.round(0, x.cmp(0) >= 0 ? 0 /* ROUND_DOWN */ : 3 /* ROUND_UP */);\n}\nexport function pow(x, n) {\n return x.pow(n);\n}\nexport function sqrt(x) {\n return x.sqrt();\n}\nexport function op_Addition(x, y) {\n return x.add(y);\n}\nexport function op_Subtraction(x, y) {\n return x.sub(y);\n}\nexport function op_Multiply(x, y) {\n return x.mul(y);\n}\nexport function op_Division(x, y) {\n return x.div(y);\n}\nexport function op_Modulus(x, y) {\n return x.mod(y);\n}\nexport function op_UnaryNegation(x) {\n const x2 = new Decimal(x);\n x2.s = -x2.s || 0;\n return x2;\n}\nexport function op_UnaryPlus(x) {\n return x;\n}\nexport const add = op_Addition;\nexport const subtract = op_Subtraction;\nexport const multiply = op_Multiply;\nexport const divide = op_Division;\nexport const remainder = op_Modulus;\nexport const negate = op_UnaryNegation;\nexport function toString(x) {\n return x.toString();\n}\nexport function tryParse(str, defValue) {\n try {\n defValue.contents = new Decimal(str.trim());\n return true;\n }\n catch {\n return false;\n }\n}\nexport function parse(str) {\n const defValue = new FSharpRef(get_Zero);\n if (tryParse(str, defValue)) {\n return defValue.contents;\n }\n else {\n throw new Error(`The input string ${str} was not in a correct format.`);\n }\n}\nexport function toNumber(x) {\n return +x;\n}\nfunction decimalToHex(dec, bitSize) {\n const hex = new Uint8Array(bitSize / 4 | 0);\n let hexCount = 1;\n for (let d = 0; d < dec.length; d++) {\n let value = dec[d];\n for (let i = 0; i < hexCount; i++) {\n const digit = hex[i] * 10 + value | 0;\n hex[i] = digit & 0xF;\n value = digit >> 4;\n }\n if (value !== 0) {\n hex[hexCount++] = value;\n }\n }\n return hex.slice(0, hexCount); // digits in reverse order\n}\nfunction hexToDecimal(hex, bitSize) {\n const dec = new Uint8Array(bitSize * 301 / 1000 + 1 | 0);\n let decCount = 1;\n for (let d = hex.length - 1; d >= 0; d--) {\n let carry = hex[d];\n for (let i = 0; i < decCount; i++) {\n const val = dec[i] * 16 + carry | 0;\n dec[i] = (val % 10) | 0;\n carry = (val / 10) | 0;\n }\n while (carry > 0) {\n dec[decCount++] = (carry % 10) | 0;\n carry = (carry / 10) | 0;\n }\n }\n return dec.slice(0, decCount); // digits in reverse order\n}\nfunction setInt32Bits(hexDigits, bits, offset) {\n for (let i = 0; i < 8; i++) {\n hexDigits[offset + i] = (bits >> (i * 4)) & 0xF;\n }\n}\nfunction getInt32Bits(hexDigits, offset) {\n let bits = 0;\n for (let i = 0; i < 8; i++) {\n bits = bits | (hexDigits[offset + i] << (i * 4));\n }\n return bits;\n}\nexport function fromIntArray(bits) {\n return fromInts(bits[0], bits[1], bits[2], bits[3]);\n}\nexport function fromInts(low, mid, high, signExp) {\n const isNegative = signExp < 0;\n const scale = (signExp >> 16) & 0x7F;\n return fromParts(low, mid, high, isNegative, scale);\n}\nexport function fromParts(low, mid, high, isNegative, scale) {\n const bitSize = 96;\n const hexDigits = new Uint8Array(bitSize / 4);\n setInt32Bits(hexDigits, low, 0);\n setInt32Bits(hexDigits, mid, 8);\n setInt32Bits(hexDigits, high, 16);\n const decDigits = hexToDecimal(hexDigits, bitSize);\n scale = scale & 0x7F;\n const big = new Decimal(0);\n big.c = Array.from(decDigits.reverse());\n big.e = decDigits.length - scale - 1;\n big.s = isNegative ? -1 : 1;\n const d = new Decimal(big);\n return d;\n}\nexport function getBits(d) {\n const bitSize = 96;\n const decDigits = Uint8Array.from(d.c);\n const hexDigits = decimalToHex(decDigits, bitSize);\n const low = getInt32Bits(hexDigits, 0);\n const mid = getInt32Bits(hexDigits, 8);\n const high = getInt32Bits(hexDigits, 16);\n const decStr = d.toString();\n const dotPos = decStr.indexOf(\".\");\n const scale = dotPos < 0 ? 0 : decStr.length - dotPos - 1;\n const signExp = ((scale & 0x7F) << 16) | (d.s < 0 ? 0x80000000 : 0);\n return [low, mid, high, signExp];\n}\n// export function makeRangeStepFunction(step: Decimal, last: Decimal) {\n// const stepComparedWithZero = step.cmp(get_Zero);\n// if (stepComparedWithZero === 0) {\n// throw new Error(\"The step of a range cannot be zero\");\n// }\n// const stepGreaterThanZero = stepComparedWithZero > 0;\n// return (x: Decimal) => {\n// const comparedWithLast = x.cmp(last);\n// if ((stepGreaterThanZero && comparedWithLast <= 0)\n// || (!stepGreaterThanZero && comparedWithLast >= 0)) {\n// return [x, op_Addition(x, step)];\n// } else {\n// return undefined;\n// }\n// };\n// }\n","import { fromParts, truncate } from \"./Decimal.js\";\nimport { bigintHash } from \"./Util.js\";\nconst isBigEndian = false;\nBigInt.prototype.toJSON = function () {\n return `${this.toString()}`;\n};\nconst zero = 0n;\nconst one = 1n;\nconst two = 2n;\nconst minusOne = -1n;\nexport function isBigInt(x) {\n return typeof x === \"bigint\";\n}\nexport function hash(x) {\n return bigintHash(x);\n}\nexport function equals(x, y) {\n return x === y;\n}\nexport function compare(x, y) {\n return x < y ? -1 : x > y ? 1 : 0;\n}\nexport function abs(x) { return x < zero ? -x : x; }\nexport function sign(x) { return x < zero ? -1 : x > zero ? 1 : 0; }\nexport function max(x, y) { return x > y ? x : y; }\nexport function min(x, y) { return x < y ? x : y; }\nexport function maxMagnitude(x, y) { return abs(x) > abs(y) ? x : y; }\nexport function minMagnitude(x, y) { return abs(x) < abs(y) ? x : y; }\nexport function clamp(x, min, max) {\n return x < min ? min : x > max ? max : x;\n}\nexport function add(x, y) { return x + y; }\nexport function subtract(x, y) { return x - y; }\nexport function multiply(x, y) { return x * y; }\nexport function divide(x, y) { return x / y; }\nexport function remainder(x, y) { return x % y; }\nexport function negate(x) { return -x; }\nexport function op_UnaryNegation(x) { return -x; }\nexport function op_LogicalNot(x) { return ~x; }\nexport function op_UnaryPlus(x) { return x; }\nexport function op_Addition(x, y) { return x + y; }\nexport function op_Subtraction(x, y) { return x - y; }\nexport function op_Multiply(x, y) { return x * y; }\nexport function op_Division(x, y) { return x / y; }\nexport function op_Modulus(x, y) { return x % y; }\nexport function op_RightShift(x, n) { return x >> BigInt(n); }\nexport function op_LeftShift(x, n) { return x << BigInt(n); }\nexport function op_BitwiseAnd(x, y) { return x & y; }\nexport function op_BitwiseOr(x, y) { return x | y; }\nexport function op_ExclusiveOr(x, y) { return x ^ y; }\nexport function op_LessThan(x, y) { return x < y; }\nexport function op_LessThanOrEqual(x, y) { return x <= y; }\nexport function op_GreaterThan(x, y) { return x > y; }\nexport function op_GreaterThanOrEqual(x, y) { return x >= y; }\nexport function op_Equality(x, y) { return x === y; }\nexport function op_Inequality(x, y) { return x !== y; }\nexport function get_Zero() { return zero; }\nexport function get_One() { return one; }\nexport function get_MinusOne() { return minusOne; }\nexport function get_IsZero(x) { return x === zero; }\nexport function get_IsOne(x) { return x === one; }\nexport function get_IsEven(x) { return isEvenInteger(x); }\nexport function get_IsPowerOfTwo(x) { return isPow2(x); }\nexport function get_Sign(x) { return sign(x); }\nexport function isNegative(x) { return x < zero; }\nexport function isPositive(x) { return x > zero; }\nexport function isEvenInteger(x) { return (x % two) === zero; }\nexport function isOddInteger(x) { return (x % two) !== zero; }\nexport function isPow2(x) { return (x & (x - one)) === zero; }\nexport function fromZero() { return zero; }\nexport function fromOne() { return one; }\nexport function fromInt8(n) { return BigInt(n); }\nexport function fromUInt8(n) { return BigInt(n); }\nexport function fromInt16(n) { return BigInt(n); }\nexport function fromUInt16(n) { return BigInt(n); }\nexport function fromInt32(n) { return BigInt(n); }\nexport function fromUInt32(n) { return BigInt(n); }\nexport function fromInt64(n) { return n; }\nexport function fromUInt64(n) { return n; }\nexport function fromInt128(n) { return n; }\nexport function fromUInt128(n) { return n; }\nexport function fromNativeInt(n) { return n; }\nexport function fromUNativeInt(n) { return n; }\nexport function fromFloat16(n) { return BigInt(Math.trunc(n)); }\nexport function fromFloat32(n) { return BigInt(Math.trunc(n)); }\nexport function fromFloat64(n) { return BigInt(Math.trunc(n)); }\nexport function fromDecimal(d) { return BigInt(truncate(d).toString()); }\nexport function fromBigInt(x) { return x; }\nexport function fromBoolean(b) { return BigInt(b); }\nexport function fromChar(c) { return BigInt(c.charCodeAt(0)); }\nexport function fromString(s) { return BigInt(s); }\nexport function fromByteArray(bytes) {\n return fromSignedBytes(bytes, isBigEndian);\n}\nexport function toByteArray(value) {\n return toSignedBytes(value, isBigEndian);\n}\nexport function toInt8(x) { return Number(BigInt.asIntN(8, x)); }\nexport function toUInt8(x) { return Number(BigInt.asUintN(8, x)); }\nexport function toInt16(x) { return Number(BigInt.asIntN(16, x)); }\nexport function toUInt16(x) { return Number(BigInt.asUintN(16, x)); }\nexport function toInt32(x) { return Number(BigInt.asIntN(32, x)); }\nexport function toUInt32(x) { return Number(BigInt.asUintN(32, x)); }\nexport function toInt64(x) { return BigInt.asIntN(64, x); }\nexport function toUInt64(x) { return BigInt.asUintN(64, x); }\nexport function toInt128(x) { return BigInt.asIntN(128, x); }\nexport function toUInt128(x) { return BigInt.asUintN(128, x); }\nexport function toNativeInt(x) { return BigInt.asIntN(64, x); }\nexport function toUNativeInt(x) { return BigInt.asUintN(64, x); }\nexport function toFloat16(x) { return Number(x); }\nexport function toFloat32(x) { return Number(x); }\nexport function toFloat64(x) { return Number(x); }\nexport function toDecimal(x) {\n const isNegative = x < zero;\n const bits = abs(x);\n const low = Number(BigInt.asUintN(32, bits));\n const mid = Number(BigInt.asUintN(32, bits >> 32n));\n const high = Number(BigInt.asUintN(32, bits >> 64n));\n const scale = 0;\n return fromParts(low, mid, high, isNegative, scale);\n}\nexport function toBigInt(x) { return x; }\nexport function toBoolean(x) { return x !== zero; }\nexport function toChar(x) {\n return String.fromCharCode(toUInt16(x));\n}\nexport function toString(x) { return x.toString(); }\nexport function tryParse(s, res) {\n try {\n res.contents = BigInt(s);\n return true;\n }\n catch (err) {\n return false;\n }\n}\nexport function parse(s) {\n return BigInt(s);\n}\nexport function pow(x, n) {\n return x ** BigInt(n);\n}\nexport function modPow(x, e, m) {\n return (x ** e) % m;\n}\nexport function divRem(x, y, out) {\n const div = x / y;\n const rem = x % y;\n if (out === void 0) {\n return [div, rem];\n }\n else {\n out.contents = rem;\n return div;\n }\n}\nexport function greatestCommonDivisor(x, y) {\n while (y > zero) {\n const q = x / y;\n const r = x - q * y;\n x = y;\n y = r;\n }\n return x;\n}\nexport function getBitLength(x) {\n return fromFloat64(x === zero ? 1 : log2(abs(x)) + 1);\n}\nexport function log2(x) {\n const n = Number(x);\n if (Number.isFinite(n))\n return Math.log2(n); // fast path\n if (x < zero)\n return Number.NaN;\n let shift = one;\n while (x >= (one << shift)) {\n shift = shift << one;\n }\n let log = zero;\n while (shift > one) {\n shift = shift >> one;\n if (x >= (one << shift)) {\n log = log + shift;\n x = x >> shift;\n }\n }\n return Number(log);\n}\nexport function log10(x) {\n return log2(x) * Math.log10(2);\n}\nexport function ln(x) {\n return log2(x) * Math.log(2);\n}\nexport function log(x, base) {\n return log2(x) / Math.log2(base);\n}\nexport function ilog2(x) {\n return BigInt(log2(x));\n}\n// export function copySign\n// export function createChecked\n// export function createSaturating\n// export function createTruncating\n// export function getByteCount\n// export function leadingZeroCount\n// export function popCount\n// export function rotateLeft\n// export function rotateRight\n// export function trailingZeroCount\n// export function tryFormat\n// export function tryWriteBytes\n// -------------------------------------------------\n// Binary serialization\n// -------------------------------------------------\nconst hexCodes = new Uint8Array([48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102]);\nfunction fromHexCode(code) {\n if (48 <= code && code <= 57)\n return code - 48;\n if (97 <= code && code <= 102)\n return code - 97 + 10;\n if (65 <= code && code <= 70)\n return code - 65 + 10;\n throw Error(`Invalid hex code: ${code}`);\n}\nfunction toSignedBytes(x, isBigEndian) {\n const isNeg = x < 0n;\n if (isNeg) {\n const len = log2(-x);\n const bits = len + (8 - len % 8);\n const pow2 = (1n << BigInt(bits));\n x = x + pow2; // two's complement\n }\n const hex = x.toString(16);\n const len = hex.length;\n const odd = len % 2;\n const first = hex.charCodeAt(0);\n const isLow = 48 <= first && first <= 55; // 0..7\n const start = (isNeg && isLow) || (!isNeg && !isLow) ? 1 : 0;\n const bytes = new Uint8Array(start + (len + odd) / 2);\n const inc = isBigEndian ? 1 : -1;\n let pos = isBigEndian ? 0 : bytes.length - 1;\n if (start > 0) {\n bytes[pos] = isNeg ? 255 : 0;\n pos += inc;\n }\n if (odd > 0) {\n bytes[pos] = fromHexCode(first);\n pos += inc;\n }\n for (let i = odd; i < len; i += 2, pos += inc) {\n const a = fromHexCode(hex.charCodeAt(i));\n const b = fromHexCode(hex.charCodeAt(i + 1));\n bytes[pos] = (a << 4) | b;\n }\n return bytes;\n}\nfunction fromSignedBytes(bytes, isBigEndian) {\n if (bytes == null) {\n throw new Error(\"bytes is null\");\n }\n const len = bytes.length;\n const first = isBigEndian ? 0 : len - 1;\n const isNeg = bytes[first] > 127;\n const codes = new Uint16Array(len * 2 + 2);\n codes[0] = 48; // 0\n codes[1] = 120; // x\n const inc = isBigEndian ? 1 : -1;\n let pos = isBigEndian ? 0 : len - 1;\n for (let i = 0; i < bytes.length; i++, pos += inc) {\n const byte = bytes[pos];\n codes[2 * i + 2] = hexCodes[byte >> 4];\n codes[2 * i + 3] = hexCodes[byte & 15];\n }\n const str = String.fromCharCode.apply(null, codes);\n let x = BigInt(str);\n if (isNeg) {\n const bits = len * 8;\n const pow2 = (1n << BigInt(bits));\n x = x - pow2; // two's complement\n }\n return x;\n}\n","/**\n * DateTimeOffset functions.\n *\n * Note: Date instances are always DateObjects in local\n * timezone (because JS dates are all kinds of messed up).\n * A local date returns UTC epoch when `.getTime()` is called.\n *\n * Basically; invariant: date.getTime() always return UTC time.\n */\nimport { toInt64, toFloat64 } from \"./BigInt.js\";\nimport { compareDates, dateOffset, padWithZeros } from \"./Util.js\";\nconst shortDays = [\n \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"\n];\nconst longDays = [\n \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"\n];\nconst shortMonths = [\n \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"\n];\nconst longMonths = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n];\nfunction parseRepeatToken(format, pos, patternChar) {\n let tokenLength = 0;\n let internalPos = pos;\n while (internalPos < format.length && format[internalPos] === patternChar) {\n internalPos++;\n tokenLength++;\n }\n return tokenLength;\n}\nfunction parseNextChar(format, pos) {\n if (pos >= format.length - 1) {\n return -1;\n }\n return format.charCodeAt(pos + 1);\n}\nfunction parseQuotedString(format, pos) {\n let beginPos = pos;\n // Get the character used to quote the string\n const quoteChar = format[pos];\n let result = \"\";\n let foundQuote = false;\n while (pos < format.length) {\n pos++;\n const currentChar = format[pos];\n if (currentChar === quoteChar) {\n foundQuote = true;\n break;\n }\n else if (currentChar === \"\\\\\") {\n if (pos < format.length) {\n pos++;\n result += format[pos];\n }\n else {\n // This means that '\\' is the last character in the string.\n throw new Error(\"Invalid string format\");\n }\n }\n else {\n result += currentChar;\n }\n }\n if (!foundQuote) {\n // We could not find the matching quote\n throw new Error(`Invalid string format could not find matching quote for ${quoteChar}`);\n }\n return [result, pos - beginPos + 1];\n}\nfunction dateToStringWithCustomFormat(date, format, utc) {\n let cursorPos = 0;\n let tokenLength = 0;\n let result = \"\";\n const localizedDate = utc ? DateTime(date.getTime(), 1 /* DateKind.UTC */) : date;\n while (cursorPos < format.length) {\n const token = format[cursorPos];\n switch (token) {\n case \"d\":\n tokenLength = parseRepeatToken(format, cursorPos, \"d\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += day(localizedDate);\n break;\n case 2:\n result += padWithZeros(day(localizedDate), 2);\n break;\n case 3:\n result += shortDays[dayOfWeek(localizedDate)];\n break;\n case 4:\n result += longDays[dayOfWeek(localizedDate)];\n break;\n default:\n break;\n }\n break;\n case \"f\":\n tokenLength = parseRepeatToken(format, cursorPos, \"f\");\n cursorPos += tokenLength;\n if (tokenLength <= 3) {\n const precision = 10 ** (3 - tokenLength);\n result += padWithZeros(Math.floor(millisecond(localizedDate) / precision), tokenLength);\n }\n else if (tokenLength <= 7) {\n // JavaScript Date only support precision to the millisecond\n // so we fill the rest of the precision with 0 as if the date didn't have\n // milliseconds provided to it.\n // This is to have the same behavior as .NET when doing:\n // DateTime(1, 2, 3, 4, 5, 6, DateTimeKind.Utc).ToString(\"fffff\") => 00000\n result += (\"\" + millisecond(localizedDate)).padEnd(tokenLength, \"0\");\n }\n break;\n case \"F\":\n tokenLength = parseRepeatToken(format, cursorPos, \"F\");\n cursorPos += tokenLength;\n if (tokenLength <= 3) {\n const precision = 10 ** (3 - tokenLength);\n const value = Math.floor(millisecond(localizedDate) / precision);\n if (value != 0) {\n result += padWithZeros(value, tokenLength);\n }\n }\n else if (tokenLength <= 7) {\n // JavaScript Date only support precision to the millisecond\n // so we can't go beyond that.\n // We also need to pad start with 0 if the value is not 0\n const value = millisecond(localizedDate);\n if (value != 0) {\n result += padWithZeros(value, 3);\n }\n }\n break;\n case \"g\":\n tokenLength = parseRepeatToken(format, cursorPos, \"g\");\n cursorPos += tokenLength;\n if (tokenLength <= 2) {\n result += \"A.D.\";\n }\n break;\n case \"h\":\n tokenLength = parseRepeatToken(format, cursorPos, \"h\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += hour(localizedDate) % 12;\n break;\n case 2:\n result += padWithZeros(hour(localizedDate) % 12, 2);\n break;\n default:\n break;\n }\n break;\n case \"H\":\n tokenLength = parseRepeatToken(format, cursorPos, \"H\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += hour(localizedDate);\n break;\n case 2:\n result += padWithZeros(hour(localizedDate), 2);\n break;\n default:\n break;\n }\n break;\n case \"K\":\n tokenLength = parseRepeatToken(format, cursorPos, \"K\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n switch (kind(localizedDate)) {\n case 1 /* DateKind.UTC */:\n result += \"Z\";\n break;\n case 2 /* DateKind.Local */:\n result += dateOffsetToString(localizedDate.getTimezoneOffset() * -60000);\n break;\n case 0 /* DateKind.Unspecified */:\n break;\n }\n break;\n default:\n break;\n }\n break;\n case \"m\":\n tokenLength = parseRepeatToken(format, cursorPos, \"m\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += minute(localizedDate);\n break;\n case 2:\n result += padWithZeros(minute(localizedDate), 2);\n break;\n default:\n break;\n }\n break;\n case \"M\":\n tokenLength = parseRepeatToken(format, cursorPos, \"M\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += month(localizedDate);\n break;\n case 2:\n result += padWithZeros(month(localizedDate), 2);\n break;\n case 3:\n result += shortMonths[month(localizedDate) - 1];\n break;\n case 4:\n result += longMonths[month(localizedDate) - 1];\n break;\n default:\n break;\n }\n break;\n case \"s\":\n tokenLength = parseRepeatToken(format, cursorPos, \"s\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += second(localizedDate);\n break;\n case 2:\n result += padWithZeros(second(localizedDate), 2);\n break;\n default:\n break;\n }\n break;\n case \"t\":\n tokenLength = parseRepeatToken(format, cursorPos, \"t\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += localizedDate.getHours() < 12 ? \"A\" : \"P\";\n break;\n case 2:\n result += localizedDate.getHours() < 12 ? \"AM\" : \"PM\";\n break;\n default:\n break;\n }\n break;\n case \"y\":\n tokenLength = parseRepeatToken(format, cursorPos, \"y\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += localizedDate.getFullYear() % 100;\n break;\n case 2:\n result += padWithZeros(localizedDate.getFullYear() % 100, 2);\n break;\n case 3:\n result += padWithZeros(localizedDate.getFullYear(), 3);\n break;\n case 4:\n result += padWithZeros(localizedDate.getFullYear(), 4);\n break;\n case 5:\n result += padWithZeros(localizedDate.getFullYear(), 5);\n break;\n default:\n break;\n }\n break;\n case \"z\":\n tokenLength = parseRepeatToken(format, cursorPos, \"z\");\n cursorPos += tokenLength;\n let utcOffsetText = \"\";\n switch (kind(localizedDate)) {\n case 1 /* DateKind.UTC */:\n utcOffsetText = \"+00:00\";\n break;\n case 2 /* DateKind.Local */:\n utcOffsetText = dateOffsetToString(localizedDate.getTimezoneOffset() * -60000);\n break;\n case 0 /* DateKind.Unspecified */:\n utcOffsetText = dateOffsetToString(toLocalTime(localizedDate).getTimezoneOffset() * -60000);\n break;\n }\n const sign = utcOffsetText[0] === \"-\" ? \"-\" : \"+\";\n const hours = parseInt(utcOffsetText.substring(1, 3), 10);\n const minutes = parseInt(utcOffsetText.substring(4, 6), 10);\n switch (tokenLength) {\n case 1:\n result += `${sign}${hours}`;\n break;\n case 2:\n result += `${sign}${padWithZeros(hours, 2)}`;\n break;\n default:\n result += `${sign}${padWithZeros(hours, 2)}:${padWithZeros(minutes, 2)}`;\n break;\n }\n break;\n case \":\":\n result += \":\";\n cursorPos++;\n break;\n case \"/\":\n result += \"/\";\n cursorPos++;\n break;\n case \"'\":\n case '\"':\n const [quotedString, quotedStringLenght] = parseQuotedString(format, cursorPos);\n result += quotedString;\n cursorPos += quotedStringLenght;\n break;\n case \"%\":\n const nextChar = parseNextChar(format, cursorPos);\n if (nextChar >= 0 && nextChar !== \"%\".charCodeAt(0)) {\n cursorPos += 2;\n result += dateToStringWithCustomFormat(localizedDate, String.fromCharCode(nextChar), utc);\n }\n else {\n throw new Error(\"Invalid format string\");\n }\n break;\n case \"\\\\\":\n const nextChar2 = parseNextChar(format, cursorPos);\n if (nextChar2 >= 0) {\n cursorPos += 2;\n result += String.fromCharCode(nextChar2);\n }\n else {\n throw new Error(\"Invalid format string\");\n }\n break;\n default:\n cursorPos++;\n result += token;\n break;\n }\n }\n return result;\n}\nexport function kind(value) {\n return value.kind || 0;\n}\nexport function unixEpochMillisecondsToTicks(ms, offset) {\n return toInt64(((BigInt(ms) + 62135596800000n) + BigInt(offset)) * 10000n);\n}\nexport function ticksToUnixEpochMilliseconds(ticks) {\n return Number(((BigInt(ticks) / 10000n) - 62135596800000n));\n}\nexport function dateOffsetToString(offset) {\n const isMinus = offset < 0;\n offset = Math.abs(offset);\n const hours = ~~(offset / 3600000);\n const minutes = (offset % 3600000) / 60000;\n return (isMinus ? \"-\" : \"+\") +\n padWithZeros(hours, 2) + \":\" +\n padWithZeros(minutes, 2);\n}\nexport function dateToHalfUTCString(date, half) {\n const str = date.toISOString();\n return half === \"first\"\n ? str.substring(0, str.indexOf(\"T\"))\n : str.substring(str.indexOf(\"T\") + 1, str.length - 1);\n}\nfunction dateToISOString(d, utc) {\n if (utc) {\n return d.toISOString();\n }\n else {\n // JS Date is always local\n const printOffset = d.kind == null ? true : d.kind === 2 /* DateKind.Local */;\n return padWithZeros(d.getFullYear(), 4) + \"-\" +\n padWithZeros(d.getMonth() + 1, 2) + \"-\" +\n padWithZeros(d.getDate(), 2) + \"T\" +\n padWithZeros(d.getHours(), 2) + \":\" +\n padWithZeros(d.getMinutes(), 2) + \":\" +\n padWithZeros(d.getSeconds(), 2) + \".\" +\n padWithZeros(d.getMilliseconds(), 3) +\n (printOffset ? dateOffsetToString(d.getTimezoneOffset() * -60000) : \"\");\n }\n}\nfunction dateToISOStringWithOffset(dateWithOffset, offset) {\n const str = dateWithOffset.toISOString();\n return str.substring(0, str.length - 1) + dateOffsetToString(offset);\n}\nfunction dateToStringWithOffset(date, format) {\n const d = new Date(date.getTime() + (date.offset ?? 0));\n if (typeof format !== \"string\") {\n return d.toISOString().replace(/\\.\\d+/, \"\").replace(/[A-Z]|\\.\\d+/g, \" \") + dateOffsetToString((date.offset ?? 0));\n }\n else if (format.length === 1) {\n switch (format) {\n case \"D\":\n case \"d\": return dateToHalfUTCString(d, \"first\");\n case \"T\":\n case \"t\": return dateToHalfUTCString(d, \"second\");\n case \"O\":\n case \"o\": return dateToISOStringWithOffset(d, (date.offset ?? 0));\n default: throw new Error(\"Unrecognized Date print format\");\n }\n }\n else {\n return dateToStringWithCustomFormat(d, format, true);\n }\n}\nfunction dateToStringWithKind(date, format) {\n const utc = date.kind === 1 /* DateKind.UTC */;\n if (typeof format !== \"string\") {\n return utc ? date.toUTCString() : date.toLocaleString();\n }\n else if (format.length === 1) {\n switch (format) {\n case \"D\":\n case \"d\":\n return utc ? dateToHalfUTCString(date, \"first\") : date.toLocaleDateString();\n case \"T\":\n case \"t\":\n return utc ? dateToHalfUTCString(date, \"second\") : date.toLocaleTimeString();\n case \"O\":\n case \"o\":\n return dateToISOString(date, utc);\n default:\n throw new Error(\"Unrecognized Date print format\");\n }\n }\n else {\n return dateToStringWithCustomFormat(date, format, utc);\n }\n}\nexport function toString(date, format, _provider) {\n return date.offset != null\n ? dateToStringWithOffset(date, format)\n : dateToStringWithKind(date, format);\n}\nexport function DateTime(value, kind) {\n const d = new Date(value);\n d.kind = (kind == null ? 0 /* DateKind.Unspecified */ : kind) | 0;\n return d;\n}\nexport function fromTicks(ticks, kind) {\n kind = kind != null ? kind : 2 /* DateKind.Local */; // better default than Unspecified\n let date = DateTime(ticksToUnixEpochMilliseconds(ticks), kind);\n // Ticks are local to offset (in this case, either UTC or Local/Unknown).\n // If kind is anything but UTC, that means that the tick number was not\n // in utc, thus getTime() cannot return UTC, and needs to be shifted.\n if (kind !== 1 /* DateKind.UTC */) {\n date = DateTime(date.getTime() - dateOffset(date), kind);\n }\n return date;\n}\nexport function fromDateTimeOffset(date, kind) {\n switch (kind) {\n case 1 /* DateKind.UTC */: return DateTime(date.getTime(), 1 /* DateKind.UTC */);\n case 2 /* DateKind.Local */: return DateTime(date.getTime(), 2 /* DateKind.Local */);\n default:\n const d = DateTime(date.getTime() + (date.offset ?? 0), kind);\n return DateTime(d.getTime() - dateOffset(d), kind);\n }\n}\nexport function getTicks(date) {\n return unixEpochMillisecondsToTicks(date.getTime(), dateOffset(date));\n}\nexport function minValue() {\n // This is \"0001-01-01T00:00:00.000Z\", actual JS min value is -8640000000000000\n return DateTime(-62135596800000, 1 /* DateKind.UTC */);\n}\nexport function maxValue() {\n // This is \"9999-12-31T23:59:59.999Z\", actual JS max value is 8640000000000000\n return DateTime(253402300799999, 1 /* DateKind.UTC */);\n}\nexport function parseRaw(input) {\n function fail() {\n throw new Error(`The string is not a valid Date: ${input}`);\n }\n if (input == null || input.trim() === \"\") {\n fail();\n }\n // ISO dates without TZ are parsed as UTC. Adding time without TZ keeps them local.\n if (input.length === 10 && input[4] === \"-\" && input[7] === \"-\") {\n input += \"T00:00:00\";\n }\n let date = new Date(input);\n let offset = null;\n if (isNaN(date.getTime())) {\n // Try to check strings JS Date cannot parse (see #1045, #1422)\n // tslint:disable-next-line:max-line-length\n const m = /^\\s*(\\d+[^\\w\\s:]\\d+[^\\w\\s:]\\d+)?\\s*(\\d+:\\d+(?::\\d+(?:\\.\\d+)?)?)?\\s*([AaPp][Mm])?\\s*(Z|[+-]([01]?\\d):?([0-5]?\\d)?)?\\s*$/.exec(input);\n if (m != null) {\n let baseDate;\n let timeInSeconds = 0;\n if (m[2] != null) {\n const timeParts = m[2].split(\":\");\n const hourPart = parseInt(timeParts[0], 10);\n timeInSeconds =\n hourPart * 3600 +\n parseInt(timeParts[1] || \"0\", 10) * 60 +\n parseFloat(timeParts[2] || \"0\");\n if (m[3] != null && m[3].toUpperCase() === \"PM\" && hourPart < 12) {\n timeInSeconds += 720;\n }\n }\n if (m[4] != null) { // There's an offset, parse as UTC\n if (m[1] != null) {\n baseDate = new Date(m[1] + \" UTC\");\n }\n else {\n const d = new Date();\n baseDate = new Date(d.getUTCFullYear() + \"/\" + (d.getUTCMonth() + 1) + \"/\" + d.getUTCDate());\n }\n if (m[4] === \"Z\") {\n offset = \"Z\";\n }\n else {\n let offsetInMinutes = parseInt(m[5], 10) * 60 + parseInt(m[6] || \"0\", 10);\n if (m[4][0] === \"-\") {\n offsetInMinutes *= -1;\n }\n offset = offsetInMinutes;\n timeInSeconds -= offsetInMinutes * 60;\n }\n }\n else {\n if (m[1] != null) {\n baseDate = new Date(m[1]);\n }\n else {\n const d = new Date();\n baseDate = new Date(d.getFullYear() + \"/\" + (d.getMonth() + 1) + \"/\" + d.getDate());\n }\n }\n date = new Date(baseDate.getTime() + timeInSeconds * 1000);\n // correct for daylight savings time\n date = new Date(date.getTime() + (date.getTimezoneOffset() - baseDate.getTimezoneOffset()) * 60000);\n }\n else {\n fail();\n }\n // Check again the date is valid after transformations, see #2229\n if (isNaN(date.getTime())) {\n fail();\n }\n }\n return [date, offset];\n}\nexport function parse(str, detectUTC = false) {\n const [date, offset] = parseRaw(str);\n // .NET always parses DateTime as Local if there's offset info (even \"Z\")\n // Newtonsoft.Json uses UTC if the offset is \"Z\"\n const kind = offset != null\n ? (detectUTC && offset === \"Z\" ? 1 /* DateKind.UTC */ : 2 /* DateKind.Local */)\n : 0 /* DateKind.Unspecified */;\n return DateTime(date.getTime(), kind);\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch (_err) {\n return false;\n }\n}\nexport function create(year, month, day, h = 0, m = 0, s = 0, ms = 0, kind) {\n const date = kind === 1 /* DateKind.UTC */\n ? new Date(Date.UTC(year, month - 1, day, h, m, s, ms))\n : new Date(year, month - 1, day, h, m, s, ms);\n if (year <= 99) {\n if (kind === 1 /* DateKind.UTC */) {\n date.setUTCFullYear(year, month - 1, day);\n }\n else {\n date.setFullYear(year, month - 1, day);\n }\n }\n const dateValue = date.getTime();\n if (isNaN(dateValue)) {\n throw new Error(\"The parameters describe an unrepresentable Date.\");\n }\n return DateTime(dateValue, kind);\n}\nexport function now() {\n return DateTime(Date.now(), 2 /* DateKind.Local */);\n}\nexport function utcNow() {\n return DateTime(Date.now(), 1 /* DateKind.UTC */);\n}\nexport function today() {\n return date(now());\n}\nexport function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\nexport function daysInMonth(year, month) {\n return month === 2\n ? (isLeapYear(year) ? 29 : 28)\n : (month >= 8 ? (month % 2 === 0 ? 31 : 30) : (month % 2 === 0 ? 30 : 31));\n}\nexport function toUniversalTime(date) {\n return date.kind === 1 /* DateKind.UTC */ ? date : DateTime(date.getTime(), 1 /* DateKind.UTC */);\n}\nexport function toLocalTime(date) {\n return date.kind === 2 /* DateKind.Local */ ? date : DateTime(date.getTime(), 2 /* DateKind.Local */);\n}\nexport function specifyKind(d, kind) {\n return create(year(d), month(d), day(d), hour(d), minute(d), second(d), millisecond(d), kind);\n}\nexport function timeOfDay(d) {\n return hour(d) * 3600000\n + minute(d) * 60000\n + second(d) * 1000\n + millisecond(d);\n}\nexport function date(d) {\n return create(year(d), month(d), day(d), 0, 0, 0, 0, d.kind);\n}\nexport function day(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCDate() : d.getDate();\n}\nexport function hour(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCHours() : d.getHours();\n}\nexport function millisecond(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCMilliseconds() : d.getMilliseconds();\n}\nexport function minute(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCMinutes() : d.getMinutes();\n}\nexport function month(d) {\n return (d.kind === 1 /* DateKind.UTC */ ? d.getUTCMonth() : d.getMonth()) + 1;\n}\nexport function second(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCSeconds() : d.getSeconds();\n}\nexport function year(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCFullYear() : d.getFullYear();\n}\nexport function dayOfWeek(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCDay() : d.getDay();\n}\nexport function dayOfYear(d) {\n const _year = year(d);\n const _month = month(d);\n let _day = day(d);\n for (let i = 1; i < _month; i++) {\n _day += daysInMonth(_year, i);\n }\n return _day;\n}\nexport function add(d, ts) {\n const newDate = DateTime(d.getTime() + ts, d.kind);\n if (d.kind !== 1 /* DateKind.UTC */) {\n const oldTzOffset = d.getTimezoneOffset();\n const newTzOffset = newDate.getTimezoneOffset();\n return oldTzOffset !== newTzOffset\n ? DateTime(newDate.getTime() + (newTzOffset - oldTzOffset) * 60000, d.kind)\n : newDate;\n }\n else {\n return newDate;\n }\n}\nexport function addDays(d, v) {\n return add(d, v * 86400000);\n}\nexport function addHours(d, v) {\n return add(d, v * 3600000);\n}\nexport function addMinutes(d, v) {\n return add(d, v * 60000);\n}\nexport function addSeconds(d, v) {\n return add(d, v * 1000);\n}\nexport function addMilliseconds(d, v) {\n return add(d, v);\n}\nexport function addTicks(d, v) {\n return add(d, toFloat64(v / 10000n));\n}\nexport function addYears(d, v) {\n const newMonth = month(d);\n const newYear = year(d) + v;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, day(d));\n return create(newYear, newMonth, newDay, hour(d), minute(d), second(d), millisecond(d), d.kind);\n}\nexport function addMonths(d, v) {\n let newMonth = month(d) + v;\n let newMonth_ = 0;\n let yearOffset = 0;\n if (newMonth > 12) {\n newMonth_ = newMonth % 12;\n yearOffset = Math.floor(newMonth / 12);\n newMonth = newMonth_;\n }\n else if (newMonth < 1) {\n newMonth_ = 12 + newMonth % 12;\n yearOffset = Math.floor(newMonth / 12) + (newMonth_ === 12 ? -1 : 0);\n newMonth = newMonth_;\n }\n const newYear = year(d) + yearOffset;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, day(d));\n return create(newYear, newMonth, newDay, hour(d), minute(d), second(d), millisecond(d), d.kind);\n}\nexport function subtract(d, that) {\n return typeof that === \"number\"\n ? add(d, -that)\n : d.getTime() - that.getTime();\n}\nexport function toLongDateString(d) {\n return d.toDateString();\n}\nexport function toShortDateString(d) {\n return d.toLocaleDateString();\n}\nexport function toLongTimeString(d) {\n return d.toLocaleTimeString();\n}\nexport function toShortTimeString(d) {\n return d.toLocaleTimeString().replace(/:\\d\\d(?!:)/, \"\");\n}\nexport function equals(d1, d2) {\n return d1.getTime() === d2.getTime();\n}\nexport const compare = compareDates;\nexport const compareTo = compareDates;\nexport function op_Addition(x, y) {\n return add(x, y);\n}\nexport function op_Subtraction(x, y) {\n return subtract(x, y);\n}\nexport function isDaylightSavingTime(x) {\n const jan = new Date(x.getFullYear(), 0, 1);\n const jul = new Date(x.getFullYear(), 6, 1);\n return isDST(jan.getTimezoneOffset(), jul.getTimezoneOffset(), x.getTimezoneOffset());\n}\nfunction isDST(janOffset, julOffset, tOffset) {\n return Math.min(janOffset, julOffset) === tOffset;\n}\nexport default DateTime;\n","export function create(pattern, options = 0) {\n // Supported RegexOptions\n // * IgnoreCase: 0x0001\n // * Multiline: 0x0002\n // * Compiled: 0x0008 (ignored)\n // * Singleline: 0x0010\n // * ECMAScript: 0x0100 (ignored)\n if ((options & ~(1 ^ 2 ^ 8 ^ 16 ^ 256)) !== 0) {\n throw new Error(\"RegexOptions only supports: IgnoreCase, Multiline, Compiled, Singleline and ECMAScript\");\n }\n // Set always global and unicode flags for compatibility with dotnet, see #2925\n let flags = \"gu\";\n flags += options & 1 ? \"i\" : \"\"; // 0x0001 RegexOptions.IgnoreCase\n flags += options & 2 ? \"m\" : \"\";\n flags += options & 16 ? \"s\" : \"\";\n return new RegExp(pattern, flags);\n}\n// From http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\nexport function escape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n}\nexport function unescape(str) {\n return str.replace(/\\\\([\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|])/g, \"$1\");\n}\nexport function isMatch(reg, input, startAt = 0) {\n reg.lastIndex = startAt;\n return reg.test(input);\n}\nexport function match(reg, input, startAt = 0) {\n reg.lastIndex = startAt;\n return reg.exec(input);\n}\nexport function matches(reg, input, startAt = 0) {\n if (input == null) {\n throw new Error(\"Input cannot ve null\");\n }\n if (!reg.global) {\n throw new Error(\"Non-global RegExp\"); // Prevent infinite loop\n }\n reg.lastIndex = startAt;\n const matches = [];\n let m;\n let lastMatchIndex = -1;\n // tslint:disable-next-line:no-conditional-assignment\n while ((m = reg.exec(input)) != null) {\n // It can happen even global regex get stuck, see #2845\n if (m.index === lastMatchIndex) {\n reg.lastIndex++;\n }\n else {\n lastMatchIndex = m.index;\n matches.push(m);\n }\n }\n return matches;\n}\nexport function options(reg) {\n let options = 256; // ECMAScript\n options |= reg.ignoreCase ? 1 : 0;\n options |= reg.multiline ? 2 : 0;\n return options;\n}\nexport function replace(reg, input, replacement, limit, offset = 0) {\n function replacer() {\n let res = arguments[0];\n if (limit) {\n limit--;\n const match = [];\n const len = arguments.length;\n // arguments: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_function_as_a_parameter\n // * match: matched substring\n // * p1, p2, ...: nth capture group string\n // * offset: offset of matched substring\n // * string: whole string examined\n // * groups: named capturing groups\n // ONLY if regex contains a named capture group AND browser supports named groups\n // -> last element can be groups OR input string\n // -> check if last element is string\n const withGroups = typeof arguments[len - 1] !== \"string\";\n let pLast = withGroups ? len - 3 : len - 2;\n for (let i = 0; i < pLast; i++) {\n match.push(arguments[i]);\n }\n match.index = arguments[pLast++];\n match.input = arguments[pLast++];\n if (withGroups) {\n match.groups = arguments[pLast];\n }\n res = replacement(match);\n }\n return res;\n }\n if (typeof reg === \"string\") {\n const tmp = reg;\n reg = create(input, limit ?? 0);\n input = tmp;\n limit = undefined;\n }\n if (typeof replacement === \"function\") {\n limit = limit == null ? -1 : limit;\n return input.substring(0, offset) + input.substring(offset).replace(reg, replacer);\n }\n else {\n replacement =\n replacement\n // $0 doesn't work with JS regex, see #1155\n .replace(/\\$0/g, (_s) => \"$&\")\n // named groups in replacement are `${name}` in .Net, but `$` in JS (in regex: groups are `(?...)` in both)\n .replace(/\\${([^}]+)}/g, \"\\$<$1>\");\n if (limit != null) {\n let m;\n const sub1 = input.substring(offset);\n const _matches = matches(reg, sub1);\n const sub2 = matches.length > limit ? (m = _matches[limit - 1], sub1.substring(0, m.index + m[0].length)) : sub1;\n return input.substring(0, offset) + sub2.replace(reg, replacement)\n + input.substring(offset + sub2.length);\n }\n else {\n return input.replace(reg, replacement);\n }\n }\n}\nexport function split(reg, input, limit, offset = 0) {\n if (typeof reg === \"string\") {\n const tmp = reg;\n reg = create(input, limit ?? 0);\n input = tmp;\n limit = undefined;\n }\n input = input.substring(offset);\n return input.split(reg, limit);\n}\n","import { toString as dateToString } from \"./Date.js\";\nimport { compare as numericCompare, isNumeric, multiply, toExponential, toFixed, toHex, toPrecision } from \"./Numeric.js\";\nimport { escape } from \"./RegExp.js\";\nimport { toString } from \"./Types.js\";\nconst fsFormatRegExp = /(^|[^%])%([0+\\- ]*)(\\*|\\d+)?(?:\\.(\\d+))?(\\w)/g;\nconst interpolateRegExp = /(?:(^|[^%])%([0+\\- ]*)(\\d+)?(?:\\.(\\d+))?(\\w))?%P\\(\\)/g;\nconst formatRegExp = /\\{(\\d+)(,-?\\d+)?(?:\\:([a-zA-Z])(\\d{0,2})|\\:(.+?))?\\}/g;\nfunction isLessThan(x, y) {\n return numericCompare(x, y) < 0;\n}\nfunction cmp(x, y, ic) {\n function isIgnoreCase(i) {\n return i === true ||\n i === 1 /* StringComparison.CurrentCultureIgnoreCase */ ||\n i === 3 /* StringComparison.InvariantCultureIgnoreCase */ ||\n i === 5 /* StringComparison.OrdinalIgnoreCase */;\n }\n function isOrdinal(i) {\n return i === 4 /* StringComparison.Ordinal */ ||\n i === 5 /* StringComparison.OrdinalIgnoreCase */;\n }\n if (x == null) {\n return y == null ? 0 : -1;\n }\n if (y == null) {\n return 1;\n } // everything is bigger than null\n if (isOrdinal(ic)) {\n if (isIgnoreCase(ic)) {\n x = x.toLowerCase();\n y = y.toLowerCase();\n }\n return (x === y) ? 0 : (x < y ? -1 : 1);\n }\n else {\n if (isIgnoreCase(ic)) {\n x = x.toLocaleLowerCase();\n y = y.toLocaleLowerCase();\n }\n return x.localeCompare(y);\n }\n}\nexport function compare(...args) {\n switch (args.length) {\n case 2: return cmp(args[0], args[1], false);\n case 3: return cmp(args[0], args[1], args[2]);\n case 4: return cmp(args[0], args[1], args[2] === true);\n case 5: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), false);\n case 6: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), args[5]);\n case 7: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), args[5] === true);\n default: throw new Error(\"String.compare: Unsupported number of parameters\");\n }\n}\nexport function compareOrdinal(x, y) {\n return cmp(x, y, 4 /* StringComparison.Ordinal */);\n}\nexport function compareTo(x, y) {\n return cmp(x, y, 0 /* StringComparison.CurrentCulture */);\n}\nexport function startsWith(str, pattern, ic) {\n if (str.length >= pattern.length) {\n return cmp(str.substr(0, pattern.length), pattern, ic) === 0;\n }\n return false;\n}\nexport function indexOfAny(str, anyOf, ...args) {\n if (str == null || str === \"\") {\n return -1;\n }\n const startIndex = (args.length > 0) ? args[0] : 0;\n if (startIndex < 0) {\n throw new Error(\"Start index cannot be negative\");\n }\n const length = (args.length > 1) ? args[1] : str.length - startIndex;\n if (length < 0) {\n throw new Error(\"Length cannot be negative\");\n }\n if (startIndex + length > str.length) {\n throw new Error(\"Invalid startIndex and length\");\n }\n const endIndex = startIndex + length;\n const anyOfAsStr = \"\".concat.apply(\"\", anyOf);\n for (let i = startIndex; i < endIndex; i++) {\n if (anyOfAsStr.indexOf(str[i]) > -1) {\n return i;\n }\n }\n return -1;\n}\nexport function printf(input) {\n return {\n input,\n cont: fsFormat(input),\n };\n}\nexport function interpolate(str, values) {\n let valIdx = 0;\n let strIdx = 0;\n let result = \"\";\n interpolateRegExp.lastIndex = 0;\n let match = interpolateRegExp.exec(str);\n while (match) {\n // The first group corresponds to the no-escape char (^|[^%]), the actual pattern starts in the next char\n // Note: we don't use negative lookbehind because some browsers don't support it yet\n const matchIndex = match.index + (match[1] || \"\").length;\n result += str.substring(strIdx, matchIndex).replace(/%%/g, \"%\");\n const [, , flags, padLength, precision, format] = match;\n // Save interpolateRegExp.lastIndex before running formatReplacement because the values\n // may also involve interpolation and make use of interpolateRegExp (see #3078)\n strIdx = interpolateRegExp.lastIndex;\n result += formatReplacement(values[valIdx++], flags, padLength, precision, format);\n // Move interpolateRegExp.lastIndex one char behind to make sure we match the no-escape char next time\n interpolateRegExp.lastIndex = strIdx - 1;\n match = interpolateRegExp.exec(str);\n }\n result += str.substring(strIdx).replace(/%%/g, \"%\");\n return result;\n}\nfunction continuePrint(cont, arg) {\n return typeof arg === \"string\" ? cont(arg) : arg.cont(cont);\n}\nexport function toConsole(arg) {\n // Don't remove the lambda here, see #1357\n return continuePrint((x) => console.log(x), arg);\n}\nexport function toConsoleError(arg) {\n return continuePrint((x) => console.error(x), arg);\n}\nexport function toText(arg) {\n return continuePrint((x) => x, arg);\n}\nexport function toFail(arg) {\n return continuePrint((x) => {\n throw new Error(x);\n }, arg);\n}\nfunction formatReplacement(rep, flags, padLength, precision, format) {\n let sign = \"\";\n flags = flags || \"\";\n format = format || \"\";\n if (isNumeric(rep)) {\n if (format.toLowerCase() !== \"x\") {\n if (isLessThan(rep, 0)) {\n rep = multiply(rep, -1);\n sign = \"-\";\n }\n else {\n if (flags.indexOf(\" \") >= 0) {\n sign = \" \";\n }\n else if (flags.indexOf(\"+\") >= 0) {\n sign = \"+\";\n }\n }\n }\n precision = precision == null ? null : parseInt(precision, 10);\n switch (format) {\n case \"f\":\n case \"F\":\n precision = precision != null ? precision : 6;\n rep = toFixed(rep, precision);\n break;\n case \"g\":\n case \"G\":\n rep = precision != null ? toPrecision(rep, precision) : toPrecision(rep);\n break;\n case \"e\":\n case \"E\":\n rep = precision != null ? toExponential(rep, precision) : toExponential(rep);\n break;\n case \"x\":\n rep = toHex(rep);\n break;\n case \"X\":\n rep = toHex(rep).toUpperCase();\n break;\n default: // AOid\n rep = String(rep);\n break;\n }\n }\n else if (rep instanceof Date) {\n rep = dateToString(rep);\n }\n else {\n rep = toString(rep);\n }\n padLength = typeof padLength === \"number\" ? padLength : parseInt(padLength, 10);\n if (!isNaN(padLength)) {\n const zeroFlag = flags.indexOf(\"0\") >= 0; // Use '0' for left padding\n const minusFlag = flags.indexOf(\"-\") >= 0; // Right padding\n const ch = minusFlag || !zeroFlag ? \" \" : \"0\";\n if (ch === \"0\") {\n rep = pad(rep, padLength - sign.length, ch, minusFlag);\n rep = sign + rep;\n }\n else {\n rep = pad(sign + rep, padLength, ch, minusFlag);\n }\n }\n else {\n rep = sign + rep;\n }\n return rep;\n}\nfunction createPrinter(cont, _strParts, _matches, _result = \"\", padArg = -1) {\n return (...args) => {\n // Make copies of the values passed by reference because the function can be used multiple times\n let result = _result;\n const strParts = _strParts.slice();\n const matches = _matches.slice();\n for (const arg of args) {\n const [, , flags, _padLength, precision, format] = matches[0];\n let padLength = _padLength;\n if (padArg >= 0) {\n padLength = padArg;\n padArg = -1;\n }\n else if (padLength === \"*\") {\n if (arg < 0) {\n throw new Error(\"Non-negative number required\");\n }\n padArg = arg;\n continue;\n }\n result += strParts[0];\n result += formatReplacement(arg, flags, padLength, precision, format);\n strParts.splice(0, 1);\n matches.splice(0, 1);\n }\n if (matches.length === 0) {\n result += strParts[0];\n return cont(result);\n }\n else {\n return createPrinter(cont, strParts, matches, result, padArg);\n }\n };\n}\nexport function fsFormat(str) {\n return (cont) => {\n fsFormatRegExp.lastIndex = 0;\n const strParts = [];\n const matches = [];\n let strIdx = 0;\n let match = fsFormatRegExp.exec(str);\n while (match) {\n // The first group corresponds to the no-escape char (^|[^%]), the actual pattern starts in the next char\n // Note: we don't use negative lookbehind because some browsers don't support it yet\n const matchIndex = match.index + (match[1] || \"\").length;\n strParts.push(str.substring(strIdx, matchIndex).replace(/%%/g, \"%\"));\n matches.push(match);\n strIdx = fsFormatRegExp.lastIndex;\n // Likewise we need to move fsFormatRegExp.lastIndex one char behind to make sure we match the no-escape char next time\n fsFormatRegExp.lastIndex -= 1;\n match = fsFormatRegExp.exec(str);\n }\n if (strParts.length === 0) {\n return cont(str.replace(/%%/g, \"%\"));\n }\n else {\n strParts.push(str.substring(strIdx).replace(/%%/g, \"%\"));\n return createPrinter(cont, strParts, matches);\n }\n };\n}\nexport function format(str, ...args) {\n let str2;\n if (typeof str === \"object\") {\n // Called with culture info\n str2 = String(args[0]);\n args.shift();\n }\n else {\n str2 = str;\n }\n return str2.replace(formatRegExp, (_, idx, padLength, format, precision, pattern) => {\n if (idx < 0 || idx >= args.length) {\n throw new Error(\"Index must be greater or equal to zero and less than the arguments' length.\");\n }\n let rep = args[idx];\n if (isNumeric(rep)) {\n precision = precision == null ? null : parseInt(precision, 10);\n switch (format) {\n case \"f\":\n case \"F\":\n precision = precision != null ? precision : 2;\n rep = toFixed(rep, precision);\n break;\n case \"g\":\n case \"G\":\n rep = precision != null ? toPrecision(rep, precision) : toPrecision(rep);\n break;\n case \"e\":\n case \"E\":\n rep = precision != null ? toExponential(rep, precision) : toExponential(rep);\n break;\n case \"p\":\n case \"P\":\n precision = precision != null ? precision : 2;\n rep = toFixed(multiply(rep, 100), precision) + \" %\";\n break;\n case \"d\":\n case \"D\":\n rep = precision != null ? padLeft(String(rep), precision, \"0\") : String(rep);\n break;\n case \"x\":\n case \"X\":\n rep = precision != null ? padLeft(toHex(rep), precision, \"0\") : toHex(rep);\n if (format === \"X\") {\n rep = rep.toUpperCase();\n }\n break;\n default:\n if (pattern) {\n let sign = \"\";\n rep = pattern.replace(/([0#,]+)(\\.[0#]+)?/, (_, intPart, decimalPart) => {\n if (isLessThan(rep, 0)) {\n rep = multiply(rep, -1);\n sign = \"-\";\n }\n decimalPart = decimalPart == null ? \"\" : decimalPart.substring(1);\n rep = toFixed(rep, Math.max(decimalPart.length, 0));\n let [repInt, repDecimal] = rep.split(\".\");\n repDecimal || (repDecimal = \"\");\n const leftZeroes = intPart.replace(/,/g, \"\").replace(/^#+/, \"\").length;\n repInt = padLeft(repInt, leftZeroes, \"0\");\n const rightZeros = decimalPart.replace(/#+$/, \"\").length;\n if (rightZeros > repDecimal.length) {\n repDecimal = padRight(repDecimal, rightZeros, \"0\");\n }\n else if (rightZeros < repDecimal.length) {\n repDecimal = repDecimal.substring(0, rightZeros) + repDecimal.substring(rightZeros).replace(/0+$/, \"\");\n }\n // Thousands separator\n if (intPart.indexOf(\",\") > 0) {\n const i = repInt.length % 3;\n const thousandGroups = Math.floor(repInt.length / 3);\n let thousands = i > 0 ? repInt.substr(0, i) + (thousandGroups > 0 ? \",\" : \"\") : \"\";\n for (let j = 0; j < thousandGroups; j++) {\n thousands += repInt.substr(i + j * 3, 3) + (j < thousandGroups - 1 ? \",\" : \"\");\n }\n repInt = thousands;\n }\n return repDecimal.length > 0 ? repInt + \".\" + repDecimal : repInt;\n });\n rep = sign + rep;\n }\n }\n }\n else if (rep instanceof Date) {\n rep = dateToString(rep, pattern || format);\n }\n else {\n rep = toString(rep);\n }\n padLength = parseInt((padLength || \" \").substring(1), 10);\n if (!isNaN(padLength)) {\n rep = pad(String(rep), Math.abs(padLength), \" \", padLength < 0);\n }\n return rep;\n });\n}\nexport function endsWith(str, search) {\n const idx = str.lastIndexOf(search);\n return idx >= 0 && idx === str.length - search.length;\n}\nexport function initialize(n, f) {\n if (n < 0) {\n throw new Error(\"String length must be non-negative\");\n }\n const xs = new Array(n);\n for (let i = 0; i < n; i++) {\n xs[i] = f(i);\n }\n return xs.join(\"\");\n}\nexport function insert(str, startIndex, value) {\n if (startIndex < 0 || startIndex > str.length) {\n throw new Error(\"startIndex is negative or greater than the length of this instance.\");\n }\n return str.substring(0, startIndex) + value + str.substring(startIndex);\n}\nexport function isNullOrEmpty(str) {\n return typeof str !== \"string\" || str.length === 0;\n}\nexport function isNullOrWhiteSpace(str) {\n return typeof str !== \"string\" || /^\\s*$/.test(str);\n}\nexport function concat(...xs) {\n return xs.map((x) => String(x)).join(\"\");\n}\nexport function join(delimiter, xs) {\n if (Array.isArray(xs)) {\n return xs.join(delimiter);\n }\n else {\n return Array.from(xs).join(delimiter);\n }\n}\nexport function joinWithIndices(delimiter, xs, startIndex, count) {\n const endIndexPlusOne = startIndex + count;\n if (endIndexPlusOne > xs.length) {\n throw new Error(\"Index and count must refer to a location within the buffer.\");\n }\n return xs.slice(startIndex, endIndexPlusOne).join(delimiter);\n}\nfunction notSupported(name) {\n throw new Error(\"The environment doesn't support '\" + name + \"', please use a polyfill.\");\n}\nexport function toBase64String(inArray) {\n let str = \"\";\n for (let i = 0; i < inArray.length; i++) {\n str += String.fromCharCode(inArray[i]);\n }\n return typeof btoa === \"function\" ? btoa(str) : notSupported(\"btoa\");\n}\nexport function fromBase64String(b64Encoded) {\n const binary = typeof atob === \"function\" ? atob(b64Encoded) : notSupported(\"atob\");\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\nfunction pad(str, len, ch, isRight) {\n ch = ch || \" \";\n len = len - str.length;\n for (let i = 0; i < len; i++) {\n str = isRight ? str + ch : ch + str;\n }\n return str;\n}\nexport function padLeft(str, len, ch) {\n return pad(str, len, ch);\n}\nexport function padRight(str, len, ch) {\n return pad(str, len, ch, true);\n}\nexport function remove(str, startIndex, count) {\n if (startIndex >= str.length) {\n throw new Error(\"startIndex must be less than length of string\");\n }\n if (typeof count === \"number\" && (startIndex + count) > str.length) {\n throw new Error(\"Index and count must refer to a location within the string.\");\n }\n return str.slice(0, startIndex) + (typeof count === \"number\" ? str.substr(startIndex + count) : \"\");\n}\nexport function replace(str, search, replace) {\n return str.replace(new RegExp(escape(search), \"g\"), replace);\n}\nexport function replicate(n, x) {\n return initialize(n, () => x);\n}\nexport function getCharAtIndex(input, index) {\n if (index < 0 || index >= input.length) {\n throw new Error(\"Index was outside the bounds of the array.\");\n }\n return input[index];\n}\nexport function split(str, splitters, count, options) {\n count = typeof count === \"number\" ? count : undefined;\n options = typeof options === \"number\" ? options : 0;\n if (count && count < 0) {\n throw new Error(\"Count cannot be less than zero\");\n }\n if (count === 0) {\n return [];\n }\n const removeEmpty = (options & 1) === 1;\n const trim = (options & 2) === 2;\n splitters = splitters || [];\n splitters = splitters.filter(x => x).map(escape);\n splitters = splitters.length > 0 ? splitters : [\"\\\\s\"];\n const splits = [];\n const reg = new RegExp(splitters.join(\"|\"), \"g\");\n let findSplits = true;\n let i = 0;\n do {\n const match = reg.exec(str);\n if (match === null) {\n const candidate = trim ? str.substring(i).trim() : str.substring(i);\n if (!removeEmpty || candidate.length > 0) {\n splits.push(candidate);\n }\n findSplits = false;\n }\n else {\n const candidate = trim ? str.substring(i, match.index).trim() : str.substring(i, match.index);\n if (!removeEmpty || candidate.length > 0) {\n if (count != null && splits.length + 1 === count) {\n splits.push(trim ? str.substring(i).trim() : str.substring(i));\n findSplits = false;\n }\n else {\n splits.push(candidate);\n }\n }\n i = reg.lastIndex;\n }\n } while (findSplits);\n return splits;\n}\nexport function trim(str, ...chars) {\n if (chars.length === 0) {\n return str.trim();\n }\n const pattern = \"[\" + escape(chars.join(\"\")) + \"]+\";\n return str.replace(new RegExp(\"^\" + pattern), \"\").replace(new RegExp(pattern + \"$\"), \"\");\n}\nexport function trimStart(str, ...chars) {\n return chars.length === 0\n ? str.trimStart()\n : str.replace(new RegExp(\"^[\" + escape(chars.join(\"\")) + \"]+\"), \"\");\n}\nexport function trimEnd(str, ...chars) {\n return chars.length === 0\n ? str.trimEnd()\n : str.replace(new RegExp(\"[\" + escape(chars.join(\"\")) + \"]+$\"), \"\");\n}\nexport function filter(pred, x) {\n return x.split(\"\").filter((c) => pred(c)).join(\"\");\n}\nexport function substring(str, startIndex, length) {\n if ((startIndex + (length || 0) > str.length)) {\n throw new Error(\"Invalid startIndex and/or length\");\n }\n return length != null ? str.substr(startIndex, length) : str.substr(startIndex);\n}\nexport function toCharArray2(str, startIndex, length) {\n return substring(str, startIndex, length).split(\"\");\n}\nexport function fmt(strs, ...args) {\n return ({ strs, args });\n}\nexport function fmtWith(fmts) {\n return (strs, ...args) => ({ strs, args, fmts });\n}\nexport function getFormat(s) {\n return s.fmts\n ? s.strs.reduce((acc, newPart, index) => acc + `{${String(index - 1) + s.fmts[index - 1]}}` + newPart)\n : s.strs.reduce((acc, newPart, index) => acc + `{${index - 1}}` + newPart);\n}\n","import { structuralHash, equals, compare } from \"./Util.js\";\n// Using a class here for better compatibility with TS files importing Some\nexport class Some {\n constructor(value) {\n this.value = value;\n }\n toJSON() {\n return this.value;\n }\n // Don't add \"Some\" for consistency with erased options\n toString() {\n return String(this.value);\n }\n GetHashCode() {\n return structuralHash(this.value);\n }\n Equals(other) {\n if (other == null) {\n return false;\n }\n else {\n return equals(this.value, other instanceof Some ? other.value : other);\n }\n }\n CompareTo(other) {\n if (other == null) {\n return 1;\n }\n else {\n return compare(this.value, other instanceof Some ? other.value : other);\n }\n }\n}\nexport function value(x) {\n if (x == null) {\n throw new Error(\"Option has no value\");\n }\n else {\n return x instanceof Some ? x.value : x;\n }\n}\nexport function unwrap(opt) {\n return opt instanceof Some ? opt.value : opt;\n}\nexport function some(x) {\n return x == null || x instanceof Some ? new Some(x) : x;\n}\nexport function ofNullable(x) {\n // This will fail with unit probably, an alternative would be:\n // return x === null ? undefined : (x === undefined ? new Some(x) : x);\n return x == null ? undefined : x;\n}\nexport function toNullable(x) {\n return x == null ? null : value(x);\n}\nexport function flatten(x) {\n return x == null ? undefined : value(x);\n}\nexport function toArray(opt) {\n return (opt == null) ? [] : [value(opt)];\n}\nexport function defaultArg(opt, defaultValue) {\n return (opt != null) ? value(opt) : defaultValue;\n}\nexport function defaultArgWith(opt, defThunk) {\n return (opt != null) ? value(opt) : defThunk();\n}\nexport function orElse(opt, ifNone) {\n return opt == null ? ifNone : opt;\n}\nexport function orElseWith(opt, ifNoneThunk) {\n return opt == null ? ifNoneThunk() : opt;\n}\nexport function filter(predicate, opt) {\n return (opt != null) ? (predicate(value(opt)) ? opt : undefined) : opt;\n}\nexport function map(mapping, opt) {\n return (opt != null) ? some(mapping(value(opt))) : undefined;\n}\nexport function map2(mapping, opt1, opt2) {\n return (opt1 != null && opt2 != null) ? mapping(value(opt1), value(opt2)) : undefined;\n}\nexport function map3(mapping, opt1, opt2, opt3) {\n return (opt1 != null && opt2 != null && opt3 != null) ? mapping(value(opt1), value(opt2), value(opt3)) : undefined;\n}\nexport function bind(binder, opt) {\n return opt != null ? binder(value(opt)) : undefined;\n}\nexport function tryOp(op, arg) {\n try {\n return some(op(arg));\n }\n catch {\n return undefined;\n }\n}\n","export const SR_indexOutOfBounds = \"The index was outside the range of elements in the collection.\";\nexport const SR_inputWasEmpty = \"Collection was empty.\";\nexport const SR_inputMustBeNonNegative = \"The input must be non-negative.\";\nexport const SR_inputSequenceEmpty = \"The input sequence was empty.\";\nexport const SR_inputSequenceTooLong = \"The input sequence contains more than one element.\";\nexport const SR_keyNotFoundAlt = \"An index satisfying the predicate was not found in the collection.\";\nexport const SR_differentLengths = \"The collections had different lengths.\";\nexport const SR_notEnoughElements = \"The input sequence has an insufficient number of elements.\";\n","export function Helpers_allocateArrayFromCons(cons, len) {\n if ((typeof cons) === \"function\") {\n return new cons(len);\n }\n else {\n return new Array(len);\n }\n}\n","import { Helpers_allocateArrayFromCons } from \"./Native.js\";\nimport { setItem as setItem_1, item as item_2 } from \"./Array.js\";\nimport { value as value_2, map as map_1, defaultArg, some } from \"./Option.js\";\nimport { min as min_1, max as max_1 } from \"./Double.js\";\nimport { equals as equals_1, disposeSafe, getEnumerator, copyToArray, defaultOf } from \"./Util.js\";\nimport { SR_indexOutOfBounds } from \"./Global.js\";\nfunction indexNotFound() {\n throw new Error(\"An index satisfying the predicate was not found in the collection.\");\n}\nfunction differentLengths() {\n throw new Error(\"Arrays had different lengths\");\n}\nexport function append(array1, array2, cons) {\n const len1 = array1.length | 0;\n const len2 = array2.length | 0;\n const newArray = Helpers_allocateArrayFromCons(cons, len1 + len2);\n for (let i = 0; i <= (len1 - 1); i++) {\n setItem_1(newArray, i, item_2(i, array1));\n }\n for (let i_1 = 0; i_1 <= (len2 - 1); i_1++) {\n setItem_1(newArray, i_1 + len1, item_2(i_1, array2));\n }\n return newArray;\n}\nexport function filter(predicate, array) {\n return array.filter(predicate);\n}\nexport function fill(target, targetIndex, count, value) {\n const start = targetIndex | 0;\n return target.fill(value, start, (start + count));\n}\nexport function getSubArray(array, start, count) {\n const start_1 = start | 0;\n return array.slice(start_1, (start_1 + count));\n}\nexport function last(array) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n }\n return item_2(array.length - 1, array);\n}\nexport function tryLast(array) {\n if (array.length === 0) {\n return undefined;\n }\n else {\n return some(item_2(array.length - 1, array));\n }\n}\nexport function mapIndexed(f, source, cons) {\n const len = source.length | 0;\n const target = Helpers_allocateArrayFromCons(cons, len);\n for (let i = 0; i <= (len - 1); i++) {\n setItem_1(target, i, f(i, item_2(i, source)));\n }\n return target;\n}\nexport function map(f, source, cons) {\n const len = source.length | 0;\n const target = Helpers_allocateArrayFromCons(cons, len);\n for (let i = 0; i <= (len - 1); i++) {\n setItem_1(target, i, f(item_2(i, source)));\n }\n return target;\n}\nexport function mapIndexed2(f, source1, source2, cons) {\n if (source1.length !== source2.length) {\n throw new Error(\"Arrays had different lengths\");\n }\n const result = Helpers_allocateArrayFromCons(cons, source1.length);\n for (let i = 0; i <= (source1.length - 1); i++) {\n setItem_1(result, i, f(i, item_2(i, source1), item_2(i, source2)));\n }\n return result;\n}\nexport function map2(f, source1, source2, cons) {\n if (source1.length !== source2.length) {\n throw new Error(\"Arrays had different lengths\");\n }\n const result = Helpers_allocateArrayFromCons(cons, source1.length);\n for (let i = 0; i <= (source1.length - 1); i++) {\n setItem_1(result, i, f(item_2(i, source1), item_2(i, source2)));\n }\n return result;\n}\nexport function mapIndexed3(f, source1, source2, source3, cons) {\n if ((source1.length !== source2.length) ? true : (source2.length !== source3.length)) {\n throw new Error(\"Arrays had different lengths\");\n }\n const result = Helpers_allocateArrayFromCons(cons, source1.length);\n for (let i = 0; i <= (source1.length - 1); i++) {\n setItem_1(result, i, f(i, item_2(i, source1), item_2(i, source2), item_2(i, source3)));\n }\n return result;\n}\nexport function map3(f, source1, source2, source3, cons) {\n if ((source1.length !== source2.length) ? true : (source2.length !== source3.length)) {\n throw new Error(\"Arrays had different lengths\");\n }\n const result = Helpers_allocateArrayFromCons(cons, source1.length);\n for (let i = 0; i <= (source1.length - 1); i++) {\n setItem_1(result, i, f(item_2(i, source1), item_2(i, source2), item_2(i, source3)));\n }\n return result;\n}\nexport function mapFold(mapping, state, array, cons) {\n const matchValue = array.length | 0;\n if (matchValue === 0) {\n return [[], state];\n }\n else {\n let acc = state;\n const res = Helpers_allocateArrayFromCons(cons, matchValue);\n for (let i = 0; i <= (array.length - 1); i++) {\n const patternInput = mapping(acc, item_2(i, array));\n setItem_1(res, i, patternInput[0]);\n acc = patternInput[1];\n }\n return [res, acc];\n }\n}\nexport function mapFoldBack(mapping, array, state, cons) {\n const matchValue = array.length | 0;\n if (matchValue === 0) {\n return [[], state];\n }\n else {\n let acc = state;\n const res = Helpers_allocateArrayFromCons(cons, matchValue);\n for (let i = array.length - 1; i >= 0; i--) {\n const patternInput = mapping(item_2(i, array), acc);\n setItem_1(res, i, patternInput[0]);\n acc = patternInput[1];\n }\n return [res, acc];\n }\n}\nexport function indexed(source) {\n const len = source.length | 0;\n const target = new Array(len);\n for (let i = 0; i <= (len - 1); i++) {\n setItem_1(target, i, [i, item_2(i, source)]);\n }\n return target;\n}\nexport function truncate(count, array) {\n const count_1 = max_1(0, count) | 0;\n return array.slice(0, (0 + count_1));\n}\nexport function concat(arrays, cons) {\n const arrays_1 = Array.isArray(arrays) ? arrays : (Array.from(arrays));\n const matchValue = arrays_1.length | 0;\n switch (matchValue) {\n case 0:\n return Helpers_allocateArrayFromCons(cons, 0);\n case 1:\n return item_2(0, arrays_1);\n default: {\n let totalIdx = 0;\n let totalLength = 0;\n for (let idx = 0; idx <= (arrays_1.length - 1); idx++) {\n const arr_1 = item_2(idx, arrays_1);\n totalLength = ((totalLength + arr_1.length) | 0);\n }\n const result = Helpers_allocateArrayFromCons(cons, totalLength);\n for (let idx_1 = 0; idx_1 <= (arrays_1.length - 1); idx_1++) {\n const arr_2 = item_2(idx_1, arrays_1);\n for (let j = 0; j <= (arr_2.length - 1); j++) {\n setItem_1(result, totalIdx, item_2(j, arr_2));\n totalIdx = ((totalIdx + 1) | 0);\n }\n }\n return result;\n }\n }\n}\nexport function collect(mapping, array, cons) {\n return concat(map(mapping, array, defaultOf()), cons);\n}\nexport function where(predicate, array) {\n return array.filter(predicate);\n}\nexport function indexOf(array, item_1, start, count, eq) {\n const start_1 = defaultArg(start, 0) | 0;\n const end$0027 = defaultArg(map_1((c) => (start_1 + c), count), array.length) | 0;\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i >= end$0027) {\n return -1;\n }\n else if (eq.Equals(item_1, item_2(i, array))) {\n return i | 0;\n }\n else {\n i_mut = (i + 1);\n continue loop;\n }\n break;\n }\n };\n return loop(start_1) | 0;\n}\nexport function contains(value, array, eq) {\n return indexOf(array, value, undefined, undefined, eq) >= 0;\n}\nexport function empty(cons) {\n return Helpers_allocateArrayFromCons(cons, 0);\n}\nexport function singleton(value, cons) {\n const ar = Helpers_allocateArrayFromCons(cons, 1);\n setItem_1(ar, 0, value);\n return ar;\n}\nexport function initialize(count, initializer, cons) {\n if (count < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n }\n const result = Helpers_allocateArrayFromCons(cons, count);\n for (let i = 0; i <= (count - 1); i++) {\n setItem_1(result, i, initializer(i));\n }\n return result;\n}\nexport function pairwise(array) {\n if (array.length < 2) {\n return [];\n }\n else {\n const count = (array.length - 1) | 0;\n const result = new Array(count);\n for (let i = 0; i <= (count - 1); i++) {\n setItem_1(result, i, [item_2(i, array), item_2(i + 1, array)]);\n }\n return result;\n }\n}\nexport function replicate(count, initial, cons) {\n if (count < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n }\n const result = Helpers_allocateArrayFromCons(cons, count);\n for (let i = 0; i <= (result.length - 1); i++) {\n setItem_1(result, i, initial);\n }\n return result;\n}\nexport function copy(array) {\n return array.slice();\n}\nexport function copyTo(source, sourceIndex, target, targetIndex, count) {\n copyToArray(source, sourceIndex, target, targetIndex, count);\n}\nexport function reverse(array) {\n const array_2 = array.slice();\n return array_2.reverse();\n}\nexport function scan(folder, state, array, cons) {\n const res = Helpers_allocateArrayFromCons(cons, array.length + 1);\n setItem_1(res, 0, state);\n for (let i = 0; i <= (array.length - 1); i++) {\n setItem_1(res, i + 1, folder(item_2(i, res), item_2(i, array)));\n }\n return res;\n}\nexport function scanBack(folder, array, state, cons) {\n const res = Helpers_allocateArrayFromCons(cons, array.length + 1);\n setItem_1(res, array.length, state);\n for (let i = array.length - 1; i >= 0; i--) {\n setItem_1(res, i, folder(item_2(i, array), item_2(i + 1, res)));\n }\n return res;\n}\nexport function skip(count, array, cons) {\n if (count > array.length) {\n throw new Error(\"count is greater than array length\\\\nParameter name: count\");\n }\n if (count === array.length) {\n return Helpers_allocateArrayFromCons(cons, 0);\n }\n else {\n const count_1 = ((count < 0) ? 0 : count) | 0;\n return array.slice(count_1);\n }\n}\nexport function skipWhile(predicate, array, cons) {\n let count = 0;\n while ((count < array.length) && predicate(item_2(count, array))) {\n count = ((count + 1) | 0);\n }\n if (count === array.length) {\n return Helpers_allocateArrayFromCons(cons, 0);\n }\n else {\n const count_1 = count | 0;\n return array.slice(count_1);\n }\n}\nexport function take(count, array, cons) {\n if (count < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n }\n if (count > array.length) {\n throw new Error(\"count is greater than array length\\\\nParameter name: count\");\n }\n if (count === 0) {\n return Helpers_allocateArrayFromCons(cons, 0);\n }\n else {\n return array.slice(0, (0 + count));\n }\n}\nexport function takeWhile(predicate, array, cons) {\n let count = 0;\n while ((count < array.length) && predicate(item_2(count, array))) {\n count = ((count + 1) | 0);\n }\n if (count === 0) {\n return Helpers_allocateArrayFromCons(cons, 0);\n }\n else {\n const count_1 = count | 0;\n return array.slice(0, (0 + count_1));\n }\n}\nexport function addInPlace(x, array) {\n array.push(x);\n}\nexport function addRangeInPlace(range, array) {\n const enumerator = getEnumerator(range);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n addInPlace(enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), array);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n}\nexport function insertRangeInPlace(index, range, array) {\n let index_1;\n let i = index;\n const enumerator = getEnumerator(range);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const x = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n (index_1 = (i | 0), array.splice(index_1, 0, x));\n i = ((i + 1) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n}\nexport function removeInPlace(item_1, array, eq) {\n const i = indexOf(array, item_1, undefined, undefined, eq) | 0;\n if (i > -1) {\n array.splice(i, 1);\n return true;\n }\n else {\n return false;\n }\n}\nexport function removeAllInPlace(predicate, array) {\n const countRemoveAll = (count) => {\n const i = (array.findIndex(predicate)) | 0;\n if (i > -1) {\n array.splice(i, 1);\n return (countRemoveAll(count) + 1) | 0;\n }\n else {\n return count | 0;\n }\n };\n return countRemoveAll(0) | 0;\n}\nexport function partition(f, source, cons) {\n const len = source.length | 0;\n const res1 = Helpers_allocateArrayFromCons(cons, len);\n const res2 = Helpers_allocateArrayFromCons(cons, len);\n let iTrue = 0;\n let iFalse = 0;\n for (let i = 0; i <= (len - 1); i++) {\n if (f(item_2(i, source))) {\n setItem_1(res1, iTrue, item_2(i, source));\n iTrue = ((iTrue + 1) | 0);\n }\n else {\n setItem_1(res2, iFalse, item_2(i, source));\n iFalse = ((iFalse + 1) | 0);\n }\n }\n return [truncate(iTrue, res1), truncate(iFalse, res2)];\n}\nexport function find(predicate, array) {\n const matchValue = array.find(predicate);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_2(matchValue);\n }\n}\nexport function tryFind(predicate, array) {\n return array.find(predicate);\n}\nexport function findIndex(predicate, array) {\n const matchValue = (array.findIndex(predicate)) | 0;\n if (matchValue > -1) {\n return matchValue | 0;\n }\n else {\n indexNotFound();\n return -1;\n }\n}\nexport function tryFindIndex(predicate, array) {\n const matchValue = (array.findIndex(predicate)) | 0;\n if (matchValue > -1) {\n return matchValue;\n }\n else {\n return undefined;\n }\n}\nexport function pick(chooser, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i >= array.length) {\n return indexNotFound();\n }\n else {\n const matchValue = chooser(item_2(i, array));\n if (matchValue != null) {\n return value_2(matchValue);\n }\n else {\n i_mut = (i + 1);\n continue loop;\n }\n }\n break;\n }\n };\n return loop(0);\n}\nexport function tryPick(chooser, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i >= array.length) {\n return undefined;\n }\n else {\n const matchValue = chooser(item_2(i, array));\n if (matchValue == null) {\n i_mut = (i + 1);\n continue loop;\n }\n else {\n return matchValue;\n }\n }\n break;\n }\n };\n return loop(0);\n}\nexport function findBack(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n return indexNotFound();\n }\n else if (predicate(item_2(i, array))) {\n return item_2(i, array);\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1);\n}\nexport function tryFindBack(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n return undefined;\n }\n else if (predicate(item_2(i, array))) {\n return some(item_2(i, array));\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1);\n}\nexport function findLastIndex(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n return -1;\n }\n else if (predicate(item_2(i, array))) {\n return i | 0;\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1) | 0;\n}\nexport function findIndexBack(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n indexNotFound();\n return -1;\n }\n else if (predicate(item_2(i, array))) {\n return i | 0;\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1) | 0;\n}\nexport function tryFindIndexBack(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n return undefined;\n }\n else if (predicate(item_2(i, array))) {\n return i;\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1);\n}\nexport function choose(chooser, array, cons) {\n const res = [];\n for (let i = 0; i <= (array.length - 1); i++) {\n const matchValue = chooser(item_2(i, array));\n if (matchValue != null) {\n const y = value_2(matchValue);\n res.push(y);\n }\n }\n if (equals_1(cons, defaultOf())) {\n return res;\n }\n else {\n return map((x) => x, res, cons);\n }\n}\nexport function foldIndexed(folder, state, array) {\n return array.reduce(((delegateArg, delegateArg_1, delegateArg_2) => folder(delegateArg_2, delegateArg, delegateArg_1)), state);\n}\nexport function fold(folder, state, array) {\n const folder_1 = folder;\n return array.reduce((folder_1), state);\n}\nexport function iterate(action, array) {\n for (let i = 0; i <= (array.length - 1); i++) {\n action(item_2(i, array));\n }\n}\nexport function iterateIndexed(action, array) {\n for (let i = 0; i <= (array.length - 1); i++) {\n action(i, item_2(i, array));\n }\n}\nexport function iterate2(action, array1, array2) {\n if (array1.length !== array2.length) {\n differentLengths();\n }\n for (let i = 0; i <= (array1.length - 1); i++) {\n action(item_2(i, array1), item_2(i, array2));\n }\n}\nexport function iterateIndexed2(action, array1, array2) {\n if (array1.length !== array2.length) {\n differentLengths();\n }\n for (let i = 0; i <= (array1.length - 1); i++) {\n action(i, item_2(i, array1), item_2(i, array2));\n }\n}\nexport function isEmpty(array) {\n return array.length === 0;\n}\nexport function forAll(predicate, array) {\n return array.every(predicate);\n}\nexport function permute(f, array) {\n const size = array.length | 0;\n const res = array.slice();\n const checkFlags = new Array(size);\n iterateIndexed((i, x) => {\n const j = f(i) | 0;\n if ((j < 0) ? true : (j >= size)) {\n throw new Error(\"Not a valid permutation\");\n }\n setItem_1(res, j, x);\n setItem_1(checkFlags, j, 1);\n }, array);\n if (!(checkFlags.every((y) => (1 === y)))) {\n throw new Error(\"Not a valid permutation\");\n }\n return res;\n}\nexport function setSlice(target, lower, upper, source) {\n const lower_1 = defaultArg(lower, 0) | 0;\n const upper_1 = defaultArg(upper, -1) | 0;\n const length = (((upper_1 >= 0) ? upper_1 : (target.length - 1)) - lower_1) | 0;\n for (let i = 0; i <= length; i++) {\n setItem_1(target, i + lower_1, item_2(i, source));\n }\n}\nexport function sortInPlaceBy(projection, xs, comparer) {\n xs.sort((x, y) => comparer.Compare(projection(x), projection(y)));\n}\nexport function sortInPlace(xs, comparer) {\n xs.sort((x, y) => comparer.Compare(x, y));\n}\nexport function sort(xs, comparer) {\n const xs_1 = xs.slice();\n xs_1.sort((x, y) => comparer.Compare(x, y));\n return xs_1;\n}\nexport function sortBy(projection, xs, comparer) {\n const xs_1 = xs.slice();\n xs_1.sort((x, y) => comparer.Compare(projection(x), projection(y)));\n return xs_1;\n}\nexport function sortDescending(xs, comparer) {\n const xs_1 = xs.slice();\n xs_1.sort((x, y) => (comparer.Compare(x, y) * -1));\n return xs_1;\n}\nexport function sortByDescending(projection, xs, comparer) {\n const xs_1 = xs.slice();\n xs_1.sort((x, y) => (comparer.Compare(projection(x), projection(y)) * -1));\n return xs_1;\n}\nexport function sortWith(comparer, xs) {\n const comparer_1 = comparer;\n const xs_1 = xs.slice();\n xs_1.sort(comparer_1);\n return xs_1;\n}\nexport function allPairs(xs, ys) {\n const len1 = xs.length | 0;\n const len2 = ys.length | 0;\n const res = new Array(len1 * len2);\n for (let i = 0; i <= (xs.length - 1); i++) {\n for (let j = 0; j <= (ys.length - 1); j++) {\n setItem_1(res, (i * len2) + j, [item_2(i, xs), item_2(j, ys)]);\n }\n }\n return res;\n}\nexport function unfold(generator, state) {\n const res = [];\n const loop = (state_1_mut) => {\n loop: while (true) {\n const state_1 = state_1_mut;\n const matchValue = generator(state_1);\n if (matchValue != null) {\n const x = value_2(matchValue)[0];\n const s = value_2(matchValue)[1];\n res.push(x);\n state_1_mut = s;\n continue loop;\n }\n break;\n }\n };\n loop(state);\n return res;\n}\nexport function unzip(array) {\n const len = array.length | 0;\n const res1 = new Array(len);\n const res2 = new Array(len);\n iterateIndexed((i, tupledArg) => {\n setItem_1(res1, i, tupledArg[0]);\n setItem_1(res2, i, tupledArg[1]);\n }, array);\n return [res1, res2];\n}\nexport function unzip3(array) {\n const len = array.length | 0;\n const res1 = new Array(len);\n const res2 = new Array(len);\n const res3 = new Array(len);\n iterateIndexed((i, tupledArg) => {\n setItem_1(res1, i, tupledArg[0]);\n setItem_1(res2, i, tupledArg[1]);\n setItem_1(res3, i, tupledArg[2]);\n }, array);\n return [res1, res2, res3];\n}\nexport function zip(array1, array2) {\n if (array1.length !== array2.length) {\n differentLengths();\n }\n const result = new Array(array1.length);\n for (let i = 0; i <= (array1.length - 1); i++) {\n setItem_1(result, i, [item_2(i, array1), item_2(i, array2)]);\n }\n return result;\n}\nexport function zip3(array1, array2, array3) {\n if ((array1.length !== array2.length) ? true : (array2.length !== array3.length)) {\n differentLengths();\n }\n const result = new Array(array1.length);\n for (let i = 0; i <= (array1.length - 1); i++) {\n setItem_1(result, i, [item_2(i, array1), item_2(i, array2), item_2(i, array3)]);\n }\n return result;\n}\nexport function chunkBySize(chunkSize, array) {\n if (chunkSize < 1) {\n throw new Error(\"The input must be positive.\\\\nParameter name: size\");\n }\n if (array.length === 0) {\n return [[]];\n }\n else {\n const result = [];\n for (let x = 0; x <= (~~Math.ceil(array.length / chunkSize) - 1); x++) {\n let slice;\n const start_1 = (x * chunkSize) | 0;\n slice = (array.slice(start_1, (start_1 + chunkSize)));\n result.push(slice);\n }\n return result;\n }\n}\nexport function splitAt(index, array) {\n if ((index < 0) ? true : (index > array.length)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return [array.slice(0, (0 + index)), array.slice(index)];\n}\nexport function compareWith(comparer, source1, source2) {\n if (source1 == null) {\n if (source2 == null) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (source2 == null) {\n return 1;\n }\n else {\n const len1 = source1.length | 0;\n const len2 = source2.length | 0;\n const len = ((len1 < len2) ? len1 : len2) | 0;\n let i = 0;\n let res = 0;\n while ((res === 0) && (i < len)) {\n res = (comparer(item_2(i, source1), item_2(i, source2)) | 0);\n i = ((i + 1) | 0);\n }\n if (res !== 0) {\n return res | 0;\n }\n else if (len1 > len2) {\n return 1;\n }\n else if (len1 < len2) {\n return -1;\n }\n else {\n return 0;\n }\n }\n}\nexport function compareTo(comparer, source1, source2) {\n if (source1 == null) {\n if (source2 == null) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (source2 == null) {\n return 1;\n }\n else {\n const len1 = source1.length | 0;\n const len2 = source2.length | 0;\n if (len1 > len2) {\n return 1;\n }\n else if (len1 < len2) {\n return -1;\n }\n else {\n let i = 0;\n let res = 0;\n while ((res === 0) && (i < len1)) {\n res = (comparer(item_2(i, source1), item_2(i, source2)) | 0);\n i = ((i + 1) | 0);\n }\n return res | 0;\n }\n }\n}\nexport function equalsWith(equals, array1, array2) {\n if (array1 == null) {\n if (array2 == null) {\n return true;\n }\n else {\n return false;\n }\n }\n else if (array2 == null) {\n return false;\n }\n else {\n let i = 0;\n let result = true;\n const length1 = array1.length | 0;\n const length2 = array2.length | 0;\n if (length1 > length2) {\n return false;\n }\n else if (length1 < length2) {\n return false;\n }\n else {\n while ((i < length1) && result) {\n result = equals(item_2(i, array1), item_2(i, array2));\n i = ((i + 1) | 0);\n }\n return result;\n }\n }\n}\nexport function exactlyOne(array) {\n switch (array.length) {\n case 1:\n return item_2(0, array);\n case 0:\n throw new Error(\"The input sequence was empty\\\\nParameter name: array\");\n default:\n throw new Error(\"Input array too long\\\\nParameter name: array\");\n }\n}\nexport function tryExactlyOne(array) {\n if (array.length === 1) {\n return some(item_2(0, array));\n }\n else {\n return undefined;\n }\n}\nexport function head(array) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n }\n else {\n return item_2(0, array);\n }\n}\nexport function tryHead(array) {\n if (array.length === 0) {\n return undefined;\n }\n else {\n return some(item_2(0, array));\n }\n}\nexport function tail(array) {\n if (array.length === 0) {\n throw new Error(\"Not enough elements\\\\nParameter name: array\");\n }\n return array.slice(1);\n}\nexport function item(index, array) {\n if ((index < 0) ? true : (index >= array.length)) {\n throw new Error(\"Index was outside the bounds of the array.\\\\nParameter name: index\");\n }\n else {\n return array[index];\n }\n}\nexport function setItem(array, index, value) {\n if ((index < 0) ? true : (index >= array.length)) {\n throw new Error(\"Index was outside the bounds of the array.\\\\nParameter name: index\");\n }\n else {\n array[index] = value;\n }\n}\nexport function tryItem(index, array) {\n if ((index < 0) ? true : (index >= array.length)) {\n return undefined;\n }\n else {\n return some(array[index]);\n }\n}\nexport function foldBackIndexed(folder, array, state) {\n return array.reduceRight(((delegateArg, delegateArg_1, delegateArg_2) => folder(delegateArg_2, delegateArg_1, delegateArg)), state);\n}\nexport function foldBack(folder, array, state) {\n return array.reduceRight(((delegateArg, delegateArg_1) => folder(delegateArg_1, delegateArg)), state);\n}\nexport function foldIndexed2(folder, state, array1, array2) {\n let acc = state;\n if (array1.length !== array2.length) {\n throw new Error(\"Arrays have different lengths\");\n }\n for (let i = 0; i <= (array1.length - 1); i++) {\n acc = folder(i, acc, item_2(i, array1), item_2(i, array2));\n }\n return acc;\n}\nexport function fold2(folder, state, array1, array2) {\n return foldIndexed2((_arg, acc, x, y) => folder(acc, x, y), state, array1, array2);\n}\nexport function foldBackIndexed2(folder, array1, array2, state) {\n let acc = state;\n if (array1.length !== array2.length) {\n differentLengths();\n }\n const size = array1.length | 0;\n for (let i = 1; i <= size; i++) {\n acc = folder(i - 1, item_2(size - i, array1), item_2(size - i, array2), acc);\n }\n return acc;\n}\nexport function foldBack2(f, array1, array2, state) {\n return foldBackIndexed2((_arg, x, y, acc) => f(x, y, acc), array1, array2, state);\n}\nexport function reduce(reduction, array) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\");\n }\n const reduction_1 = reduction;\n return array.reduce(reduction_1);\n}\nexport function reduceBack(reduction, array) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\");\n }\n const reduction_1 = reduction;\n return array.reduceRight(reduction_1);\n}\nexport function forAll2(predicate, array1, array2) {\n return fold2((acc, x, y) => (acc && predicate(x, y)), true, array1, array2);\n}\nexport function existsOffset(predicate_mut, array_mut, index_mut) {\n existsOffset: while (true) {\n const predicate = predicate_mut, array = array_mut, index = index_mut;\n if (index === array.length) {\n return false;\n }\n else if (predicate(item_2(index, array))) {\n return true;\n }\n else {\n predicate_mut = predicate;\n array_mut = array;\n index_mut = (index + 1);\n continue existsOffset;\n }\n break;\n }\n}\nexport function exists(predicate, array) {\n return existsOffset(predicate, array, 0);\n}\nexport function existsOffset2(predicate_mut, array1_mut, array2_mut, index_mut) {\n existsOffset2: while (true) {\n const predicate = predicate_mut, array1 = array1_mut, array2 = array2_mut, index = index_mut;\n if (index === array1.length) {\n return false;\n }\n else if (predicate(item_2(index, array1), item_2(index, array2))) {\n return true;\n }\n else {\n predicate_mut = predicate;\n array1_mut = array1;\n array2_mut = array2;\n index_mut = (index + 1);\n continue existsOffset2;\n }\n break;\n }\n}\nexport function exists2(predicate, array1, array2) {\n if (array1.length !== array2.length) {\n differentLengths();\n }\n return existsOffset2(predicate, array1, array2, 0);\n}\nexport function sum(array, adder) {\n let acc = adder.GetZero();\n for (let i = 0; i <= (array.length - 1); i++) {\n acc = adder.Add(acc, item_2(i, array));\n }\n return acc;\n}\nexport function sumBy(projection, array, adder) {\n let acc = adder.GetZero();\n for (let i = 0; i <= (array.length - 1); i++) {\n acc = adder.Add(acc, projection(item_2(i, array)));\n }\n return acc;\n}\nexport function maxBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? y : x), xs);\n}\nexport function max(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? y : x), xs);\n}\nexport function minBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? x : y), xs);\n}\nexport function min(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? x : y), xs);\n}\nexport function average(array, averager) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n }\n let total = averager.GetZero();\n for (let i = 0; i <= (array.length - 1); i++) {\n total = averager.Add(total, item_2(i, array));\n }\n return averager.DivideByInt(total, array.length);\n}\nexport function averageBy(projection, array, averager) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n }\n let total = averager.GetZero();\n for (let i = 0; i <= (array.length - 1); i++) {\n total = averager.Add(total, projection(item_2(i, array)));\n }\n return averager.DivideByInt(total, array.length);\n}\nexport function windowed(windowSize, source) {\n if (windowSize <= 0) {\n throw new Error(\"windowSize must be positive\");\n }\n let res;\n const len = max_1(0, (source.length - windowSize) + 1) | 0;\n res = (new Array(len));\n for (let i = windowSize; i <= source.length; i++) {\n setItem_1(res, i - windowSize, source.slice(i - windowSize, (i - 1) + 1));\n }\n return res;\n}\nexport function splitInto(chunks, array) {\n if (chunks < 1) {\n throw new Error(\"The input must be positive.\\\\nParameter name: chunks\");\n }\n if (array.length === 0) {\n return [[]];\n }\n else {\n const result = [];\n const chunks_1 = min_1(chunks, array.length) | 0;\n const minChunkSize = ~~(array.length / chunks_1) | 0;\n const chunksWithExtraItem = (array.length % chunks_1) | 0;\n for (let i = 0; i <= (chunks_1 - 1); i++) {\n const chunkSize = ((i < chunksWithExtraItem) ? (minChunkSize + 1) : minChunkSize) | 0;\n let slice;\n const start_1 = ((i * minChunkSize) + min_1(chunksWithExtraItem, i)) | 0;\n slice = (array.slice(start_1, (start_1 + chunkSize)));\n result.push(slice);\n }\n return result;\n }\n}\nexport function transpose(arrays, cons) {\n const arrays_1 = Array.isArray(arrays) ? arrays : (Array.from(arrays));\n const len = arrays_1.length | 0;\n if (len === 0) {\n return new Array(0);\n }\n else {\n const firstArray = item_2(0, arrays_1);\n const lenInner = firstArray.length | 0;\n if (!forAll((a) => (a.length === lenInner), arrays_1)) {\n differentLengths();\n }\n const result = new Array(lenInner);\n for (let i = 0; i <= (lenInner - 1); i++) {\n setItem_1(result, i, Helpers_allocateArrayFromCons(cons, len));\n for (let j = 0; j <= (len - 1); j++) {\n item_2(i, result)[j] = item_2(i, item_2(j, arrays_1));\n }\n }\n return result;\n }\n}\nexport function insertAt(index, y, xs, cons) {\n const len = xs.length | 0;\n if ((index < 0) ? true : (index > len)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n const target = Helpers_allocateArrayFromCons(cons, len + 1);\n for (let i = 0; i <= (index - 1); i++) {\n setItem_1(target, i, item_2(i, xs));\n }\n setItem_1(target, index, y);\n for (let i_1 = index; i_1 <= (len - 1); i_1++) {\n setItem_1(target, i_1 + 1, item_2(i_1, xs));\n }\n return target;\n}\nexport function insertManyAt(index, ys, xs, cons) {\n const len = xs.length | 0;\n if ((index < 0) ? true : (index > len)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n const ys_1 = Array.from(ys);\n const len2 = ys_1.length | 0;\n const target = Helpers_allocateArrayFromCons(cons, len + len2);\n for (let i = 0; i <= (index - 1); i++) {\n setItem_1(target, i, item_2(i, xs));\n }\n for (let i_1 = 0; i_1 <= (len2 - 1); i_1++) {\n setItem_1(target, index + i_1, item_2(i_1, ys_1));\n }\n for (let i_2 = index; i_2 <= (len - 1); i_2++) {\n setItem_1(target, i_2 + len2, item_2(i_2, xs));\n }\n return target;\n}\nexport function removeAt(index, xs) {\n if ((index < 0) ? true : (index >= xs.length)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n let i = -1;\n return filter((_arg) => {\n i = ((i + 1) | 0);\n return i !== index;\n }, xs);\n}\nexport function removeManyAt(index, count, xs) {\n let i = -1;\n let status = -1;\n const ys = filter((_arg) => {\n i = ((i + 1) | 0);\n if (i === index) {\n status = 0;\n return false;\n }\n else if (i > index) {\n if (i < (index + count)) {\n return false;\n }\n else {\n status = 1;\n return true;\n }\n }\n else {\n return true;\n }\n }, xs);\n const status_1 = (((status === 0) && ((i + 1) === (index + count))) ? 1 : status) | 0;\n if (status_1 < 1) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + ((status_1 < 0) ? \"index\" : \"count\"));\n }\n return ys;\n}\nexport function updateAt(index, y, xs, cons) {\n const len = xs.length | 0;\n if ((index < 0) ? true : (index >= len)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n const target = Helpers_allocateArrayFromCons(cons, len);\n for (let i = 0; i <= (len - 1); i++) {\n setItem_1(target, i, (i === index) ? y : item_2(i, xs));\n }\n return target;\n}\nexport function resize(xs, newSize, zero, cons) {\n let array, array_1, start_2, count_2;\n if (newSize < 0) {\n throw new Error(\"The input must be non-negative.\\\\nParameter name: newSize\");\n }\n const zero_1 = defaultArg(zero, defaultOf());\n if (xs.contents == null) {\n xs.contents = ((array = Helpers_allocateArrayFromCons(cons, newSize), array.fill(zero_1, 0, (0 + newSize))));\n }\n else {\n const len = xs.contents.length | 0;\n if (newSize < len) {\n xs.contents = ((array_1 = xs.contents, array_1.slice(0, (0 + newSize))));\n }\n else if (newSize > len) {\n const target = Helpers_allocateArrayFromCons(cons, newSize);\n if (len > 0) {\n copyTo(xs.contents, 0, target, 0, len);\n }\n xs.contents = ((start_2 = (len | 0), (count_2 = ((newSize - len) | 0), target.fill(zero_1, start_2, (start_2 + count_2)))));\n }\n }\n}\n","import { join } from \"./String.js\";\nimport { defaultArg, some, value as value_1 } from \"./Option.js\";\nimport { disposeSafe, isArrayLike, defaultOf, toIterator, getEnumerator, compare, structuralHash, equals } from \"./Util.js\";\nimport { Record } from \"./Types.js\";\nimport { class_type, record_type, option_type } from \"./Reflection.js\";\nimport { SR_inputSequenceTooLong, SR_inputSequenceEmpty, SR_inputMustBeNonNegative, SR_notEnoughElements, SR_differentLengths, SR_keyNotFoundAlt, SR_indexOutOfBounds, SR_inputWasEmpty } from \"./Global.js\";\nimport { transpose as transpose_1, splitInto as splitInto_1, windowed as windowed_1, pairwise as pairwise_1, chunkBySize as chunkBySize_1, map as map_1, permute as permute_1, tryFindIndexBack as tryFindIndexBack_1, tryFindBack as tryFindBack_1, scanBack as scanBack_1, item as item_1, foldBack2 as foldBack2_1, foldBack as foldBack_1, setItem, fill } from \"./Array.js\";\nexport class FSharpList extends Record {\n constructor(head, tail) {\n super();\n this.head = head;\n this.tail = tail;\n }\n toString() {\n const xs = this;\n return (\"[\" + join(\"; \", xs)) + \"]\";\n }\n Equals(other) {\n const xs = this;\n if (xs === other) {\n return true;\n }\n else {\n const loop = (xs_1_mut, ys_1_mut) => {\n loop: while (true) {\n const xs_1 = xs_1_mut, ys_1 = ys_1_mut;\n const matchValue = xs_1.tail;\n const matchValue_1 = ys_1.tail;\n if (matchValue != null) {\n if (matchValue_1 != null) {\n const xt = value_1(matchValue);\n const yt = value_1(matchValue_1);\n if (equals(xs_1.head, ys_1.head)) {\n xs_1_mut = xt;\n ys_1_mut = yt;\n continue loop;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n }\n else if (matchValue_1 != null) {\n return false;\n }\n else {\n return true;\n }\n break;\n }\n };\n return loop(xs, other);\n }\n }\n GetHashCode() {\n const xs = this;\n const loop = (i_mut, h_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, h = h_mut, xs_1 = xs_1_mut;\n const matchValue = xs_1.tail;\n if (matchValue != null) {\n const t = value_1(matchValue);\n if (i > 18) {\n return h | 0;\n }\n else {\n i_mut = (i + 1);\n h_mut = (((h << 1) + structuralHash(xs_1.head)) + (631 * i));\n xs_1_mut = t;\n continue loop;\n }\n }\n else {\n return h | 0;\n }\n break;\n }\n };\n return loop(0, 0, xs) | 0;\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n CompareTo(other) {\n const xs = this;\n const loop = (xs_1_mut, ys_1_mut) => {\n loop: while (true) {\n const xs_1 = xs_1_mut, ys_1 = ys_1_mut;\n const matchValue = xs_1.tail;\n const matchValue_1 = ys_1.tail;\n if (matchValue != null) {\n if (matchValue_1 != null) {\n const xt = value_1(matchValue);\n const yt = value_1(matchValue_1);\n const c = compare(xs_1.head, ys_1.head) | 0;\n if (c === 0) {\n xs_1_mut = xt;\n ys_1_mut = yt;\n continue loop;\n }\n else {\n return c | 0;\n }\n }\n else {\n return 1;\n }\n }\n else if (matchValue_1 != null) {\n return -1;\n }\n else {\n return 0;\n }\n break;\n }\n };\n return loop(xs, other) | 0;\n }\n GetEnumerator() {\n const xs = this;\n return ListEnumerator$1_$ctor_3002E699(xs);\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const xs = this;\n return getEnumerator(xs);\n }\n}\nexport function FSharpList_$reflection(gen0) {\n return record_type(\"ListModule.FSharpList\", [gen0], FSharpList, () => [[\"head\", gen0], [\"tail\", option_type(FSharpList_$reflection(gen0))]]);\n}\nexport class ListEnumerator$1 {\n constructor(xs) {\n this.xs = xs;\n this.it = this.xs;\n this.current = defaultOf();\n }\n \"System.Collections.Generic.IEnumerator`1.get_Current\"() {\n const _ = this;\n return _.current;\n }\n \"System.Collections.IEnumerator.get_Current\"() {\n const _ = this;\n return _.current;\n }\n \"System.Collections.IEnumerator.MoveNext\"() {\n const _ = this;\n const matchValue = _.it.tail;\n if (matchValue != null) {\n const t = value_1(matchValue);\n _.current = _.it.head;\n _.it = t;\n return true;\n }\n else {\n return false;\n }\n }\n \"System.Collections.IEnumerator.Reset\"() {\n const _ = this;\n _.it = _.xs;\n _.current = defaultOf();\n }\n Dispose() {\n }\n}\nexport function ListEnumerator$1_$reflection(gen0) {\n return class_type(\"ListModule.ListEnumerator`1\", [gen0], ListEnumerator$1);\n}\nexport function ListEnumerator$1_$ctor_3002E699(xs) {\n return new ListEnumerator$1(xs);\n}\nexport function FSharpList_get_Empty() {\n return new FSharpList(defaultOf(), undefined);\n}\nexport function FSharpList_Cons_305B8EAC(x, xs) {\n return new FSharpList(x, xs);\n}\nexport function FSharpList__get_IsEmpty(xs) {\n return xs.tail == null;\n}\nexport function FSharpList__get_Length(xs) {\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n const matchValue = xs_1.tail;\n if (matchValue != null) {\n i_mut = (i + 1);\n xs_1_mut = value_1(matchValue);\n continue loop;\n }\n else {\n return i | 0;\n }\n break;\n }\n };\n return loop(0, xs) | 0;\n}\nexport function FSharpList__get_Head(xs) {\n const matchValue = xs.tail;\n if (matchValue != null) {\n return xs.head;\n }\n else {\n throw new Error((SR_inputWasEmpty + \"\\\\nParameter name: \") + \"list\");\n }\n}\nexport function FSharpList__get_Tail(xs) {\n const matchValue = xs.tail;\n if (matchValue != null) {\n return value_1(matchValue);\n }\n else {\n throw new Error((SR_inputWasEmpty + \"\\\\nParameter name: \") + \"list\");\n }\n}\nexport function FSharpList__get_Item_Z524259A4(xs, index) {\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n const matchValue = xs_1.tail;\n if (matchValue != null) {\n if (i === index) {\n return xs_1.head;\n }\n else {\n i_mut = (i + 1);\n xs_1_mut = value_1(matchValue);\n continue loop;\n }\n }\n else {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n break;\n }\n };\n return loop(0, xs);\n}\nexport function indexNotFound() {\n throw new Error(SR_keyNotFoundAlt);\n}\nexport function empty() {\n return FSharpList_get_Empty();\n}\nexport function cons(x, xs) {\n return FSharpList_Cons_305B8EAC(x, xs);\n}\nexport function singleton(x) {\n return FSharpList_Cons_305B8EAC(x, FSharpList_get_Empty());\n}\nexport function isEmpty(xs) {\n return FSharpList__get_IsEmpty(xs);\n}\nexport function length(xs) {\n return FSharpList__get_Length(xs);\n}\nexport function head(xs) {\n return FSharpList__get_Head(xs);\n}\nexport function tryHead(xs) {\n if (FSharpList__get_IsEmpty(xs)) {\n return undefined;\n }\n else {\n return some(FSharpList__get_Head(xs));\n }\n}\nexport function tail(xs) {\n return FSharpList__get_Tail(xs);\n}\nexport function tryLast(xs_mut) {\n tryLast: while (true) {\n const xs = xs_mut;\n if (FSharpList__get_IsEmpty(xs)) {\n return undefined;\n }\n else {\n const t = FSharpList__get_Tail(xs);\n if (FSharpList__get_IsEmpty(t)) {\n return some(FSharpList__get_Head(xs));\n }\n else {\n xs_mut = t;\n continue tryLast;\n }\n }\n break;\n }\n}\nexport function last(xs) {\n const matchValue = tryLast(xs);\n if (matchValue == null) {\n throw new Error(SR_inputWasEmpty);\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function compareWith(comparer, xs, ys) {\n const loop = (xs_1_mut, ys_1_mut) => {\n loop: while (true) {\n const xs_1 = xs_1_mut, ys_1 = ys_1_mut;\n const matchValue = FSharpList__get_IsEmpty(xs_1);\n const matchValue_1 = FSharpList__get_IsEmpty(ys_1);\n if (matchValue) {\n if (matchValue_1) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (matchValue_1) {\n return 1;\n }\n else {\n const c = comparer(FSharpList__get_Head(xs_1), FSharpList__get_Head(ys_1)) | 0;\n if (c === 0) {\n xs_1_mut = FSharpList__get_Tail(xs_1);\n ys_1_mut = FSharpList__get_Tail(ys_1);\n continue loop;\n }\n else {\n return c | 0;\n }\n }\n break;\n }\n };\n return loop(xs, ys) | 0;\n}\nexport function toArray(xs) {\n const len = FSharpList__get_Length(xs) | 0;\n const res = fill(new Array(len), 0, len, null);\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n if (!FSharpList__get_IsEmpty(xs_1)) {\n setItem(res, i, FSharpList__get_Head(xs_1));\n i_mut = (i + 1);\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n loop(0, xs);\n return res;\n}\nexport function fold(folder, state, xs) {\n let acc = state;\n let xs_1 = xs;\n while (!FSharpList__get_IsEmpty(xs_1)) {\n acc = folder(acc, head(xs_1));\n xs_1 = FSharpList__get_Tail(xs_1);\n }\n return acc;\n}\nexport function reverse(xs) {\n return fold((acc, x) => FSharpList_Cons_305B8EAC(x, acc), FSharpList_get_Empty(), xs);\n}\nexport function foldBack(folder, xs, state) {\n return foldBack_1(folder, toArray(xs), state);\n}\nexport function foldIndexed(folder, state, xs) {\n const loop = (i_mut, acc_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, acc = acc_mut, xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return acc;\n }\n else {\n i_mut = (i + 1);\n acc_mut = folder(i, acc, FSharpList__get_Head(xs_1));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n return loop(0, state, xs);\n}\nexport function fold2(folder, state, xs, ys) {\n let acc = state;\n let xs_1 = xs;\n let ys_1 = ys;\n while (!FSharpList__get_IsEmpty(xs_1) && !FSharpList__get_IsEmpty(ys_1)) {\n acc = folder(acc, FSharpList__get_Head(xs_1), FSharpList__get_Head(ys_1));\n xs_1 = FSharpList__get_Tail(xs_1);\n ys_1 = FSharpList__get_Tail(ys_1);\n }\n return acc;\n}\nexport function foldBack2(folder, xs, ys, state) {\n return foldBack2_1(folder, toArray(xs), toArray(ys), state);\n}\nexport function unfold(gen, state) {\n const loop = (acc_mut, node_mut) => {\n let t;\n loop: while (true) {\n const acc = acc_mut, node = node_mut;\n const matchValue = gen(acc);\n if (matchValue != null) {\n acc_mut = value_1(matchValue)[1];\n node_mut = ((t = (new FSharpList(value_1(matchValue)[0], undefined)), (node.tail = t, t)));\n continue loop;\n }\n else {\n return node;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node_1 = loop(state, root);\n const t_2 = FSharpList_get_Empty();\n node_1.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function iterate(action, xs) {\n fold((unitVar, x) => {\n action(x);\n }, undefined, xs);\n}\nexport function iterate2(action, xs, ys) {\n fold2((unitVar, x, y) => {\n action(x, y);\n }, undefined, xs, ys);\n}\nexport function iterateIndexed(action, xs) {\n fold((i, x) => {\n action(i, x);\n return (i + 1) | 0;\n }, 0, xs);\n}\nexport function iterateIndexed2(action, xs, ys) {\n fold2((i, x, y) => {\n action(i, x, y);\n return (i + 1) | 0;\n }, 0, xs, ys);\n}\nexport function toSeq(xs) {\n return xs;\n}\nexport function ofArrayWithTail(xs, tail_1) {\n let res = tail_1;\n for (let i = xs.length - 1; i >= 0; i--) {\n res = FSharpList_Cons_305B8EAC(item_1(i, xs), res);\n }\n return res;\n}\nexport function ofArray(xs) {\n return ofArrayWithTail(xs, FSharpList_get_Empty());\n}\nexport function ofSeq(xs) {\n let xs_3, t;\n if (isArrayLike(xs)) {\n return ofArray(xs);\n }\n else if (xs instanceof FSharpList) {\n return xs;\n }\n else {\n const root = FSharpList_get_Empty();\n let node = root;\n const enumerator = getEnumerator(xs);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const x = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n node = ((xs_3 = node, (t = (new FSharpList(x, undefined)), (xs_3.tail = t, t))));\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n const xs_5 = node;\n const t_2 = FSharpList_get_Empty();\n xs_5.tail = t_2;\n return FSharpList__get_Tail(root);\n }\n}\nexport function concat(lists) {\n const root = FSharpList_get_Empty();\n let node = root;\n const action = (xs) => {\n node = fold((acc, x) => {\n const t = new FSharpList(x, undefined);\n acc.tail = t;\n return t;\n }, node, xs);\n };\n if (isArrayLike(lists)) {\n const xs_3 = lists;\n xs_3.forEach(action);\n }\n else if (lists instanceof FSharpList) {\n iterate(action, lists);\n }\n else {\n const enumerator = getEnumerator(lists);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n action(enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n }\n const xs_6 = node;\n const t_2 = FSharpList_get_Empty();\n xs_6.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function scan(folder, state, xs) {\n let xs_4, t_2;\n const root = FSharpList_get_Empty();\n let node;\n const t = new FSharpList(state, undefined);\n root.tail = t;\n node = t;\n let acc = state;\n let xs_3 = xs;\n while (!FSharpList__get_IsEmpty(xs_3)) {\n acc = folder(acc, FSharpList__get_Head(xs_3));\n node = ((xs_4 = node, (t_2 = (new FSharpList(acc, undefined)), (xs_4.tail = t_2, t_2))));\n xs_3 = FSharpList__get_Tail(xs_3);\n }\n const xs_6 = node;\n const t_4 = FSharpList_get_Empty();\n xs_6.tail = t_4;\n return FSharpList__get_Tail(root);\n}\nexport function scanBack(folder, xs, state) {\n return ofArray(scanBack_1(folder, toArray(xs), state));\n}\nexport function append(xs, ys) {\n return fold((acc, x) => FSharpList_Cons_305B8EAC(x, acc), ys, reverse(xs));\n}\nexport function collect(mapping, xs) {\n let xs_1, t;\n const root = FSharpList_get_Empty();\n let node = root;\n let ys = xs;\n while (!FSharpList__get_IsEmpty(ys)) {\n let zs = mapping(FSharpList__get_Head(ys));\n while (!FSharpList__get_IsEmpty(zs)) {\n node = ((xs_1 = node, (t = (new FSharpList(FSharpList__get_Head(zs), undefined)), (xs_1.tail = t, t))));\n zs = FSharpList__get_Tail(zs);\n }\n ys = FSharpList__get_Tail(ys);\n }\n const xs_3 = node;\n const t_2 = FSharpList_get_Empty();\n xs_3.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function mapIndexed(mapping, xs) {\n const root = FSharpList_get_Empty();\n const node = foldIndexed((i, acc, x) => {\n const t = new FSharpList(mapping(i, x), undefined);\n acc.tail = t;\n return t;\n }, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function map(mapping, xs) {\n const root = FSharpList_get_Empty();\n const node = fold((acc, x) => {\n const t = new FSharpList(mapping(x), undefined);\n acc.tail = t;\n return t;\n }, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function indexed(xs) {\n return mapIndexed((i, x) => [i, x], xs);\n}\nexport function map2(mapping, xs, ys) {\n const root = FSharpList_get_Empty();\n const node = fold2((acc, x, y) => {\n const t = new FSharpList(mapping(x, y), undefined);\n acc.tail = t;\n return t;\n }, root, xs, ys);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function mapIndexed2(mapping, xs, ys) {\n const loop = (i_mut, acc_mut, xs_1_mut, ys_1_mut) => {\n let t;\n loop: while (true) {\n const i = i_mut, acc = acc_mut, xs_1 = xs_1_mut, ys_1 = ys_1_mut;\n if (FSharpList__get_IsEmpty(xs_1) ? true : FSharpList__get_IsEmpty(ys_1)) {\n return acc;\n }\n else {\n i_mut = (i + 1);\n acc_mut = ((t = (new FSharpList(mapping(i, FSharpList__get_Head(xs_1), FSharpList__get_Head(ys_1)), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n ys_1_mut = FSharpList__get_Tail(ys_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node_1 = loop(0, root, xs, ys);\n const t_2 = FSharpList_get_Empty();\n node_1.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function map3(mapping, xs, ys, zs) {\n const loop = (acc_mut, xs_1_mut, ys_1_mut, zs_1_mut) => {\n let t;\n loop: while (true) {\n const acc = acc_mut, xs_1 = xs_1_mut, ys_1 = ys_1_mut, zs_1 = zs_1_mut;\n if ((FSharpList__get_IsEmpty(xs_1) ? true : FSharpList__get_IsEmpty(ys_1)) ? true : FSharpList__get_IsEmpty(zs_1)) {\n return acc;\n }\n else {\n acc_mut = ((t = (new FSharpList(mapping(FSharpList__get_Head(xs_1), FSharpList__get_Head(ys_1), FSharpList__get_Head(zs_1)), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n ys_1_mut = FSharpList__get_Tail(ys_1);\n zs_1_mut = FSharpList__get_Tail(zs_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node_1 = loop(root, xs, ys, zs);\n const t_2 = FSharpList_get_Empty();\n node_1.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function mapFold(mapping, state, xs) {\n const root = FSharpList_get_Empty();\n const patternInput_1 = fold((tupledArg, x) => {\n let t;\n const patternInput = mapping(tupledArg[1], x);\n return [(t = (new FSharpList(patternInput[0], undefined)), (tupledArg[0].tail = t, t)), patternInput[1]];\n }, [root, state], xs);\n const t_2 = FSharpList_get_Empty();\n patternInput_1[0].tail = t_2;\n return [FSharpList__get_Tail(root), patternInput_1[1]];\n}\nexport function mapFoldBack(mapping, xs, state) {\n return mapFold((acc, x) => mapping(x, acc), state, reverse(xs));\n}\nexport function tryPick(f, xs) {\n const loop = (xs_1_mut) => {\n loop: while (true) {\n const xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return undefined;\n }\n else {\n const matchValue = f(FSharpList__get_Head(xs_1));\n if (matchValue == null) {\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n else {\n return matchValue;\n }\n }\n break;\n }\n };\n return loop(xs);\n}\nexport function pick(f, xs) {\n const matchValue = tryPick(f, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFind(f, xs) {\n return tryPick((x) => (f(x) ? some(x) : undefined), xs);\n}\nexport function find(f, xs) {\n const matchValue = tryFind(f, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFindBack(f, xs) {\n return tryFindBack_1(f, toArray(xs));\n}\nexport function findBack(f, xs) {\n const matchValue = tryFindBack(f, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFindIndex(f, xs) {\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return undefined;\n }\n else if (f(FSharpList__get_Head(xs_1))) {\n return i;\n }\n else {\n i_mut = (i + 1);\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n return loop(0, xs);\n}\nexport function findIndex(f, xs) {\n const matchValue = tryFindIndex(f, xs);\n if (matchValue == null) {\n indexNotFound();\n return -1;\n }\n else {\n return value_1(matchValue) | 0;\n }\n}\nexport function tryFindIndexBack(f, xs) {\n return tryFindIndexBack_1(f, toArray(xs));\n}\nexport function findIndexBack(f, xs) {\n const matchValue = tryFindIndexBack(f, xs);\n if (matchValue == null) {\n indexNotFound();\n return -1;\n }\n else {\n return value_1(matchValue) | 0;\n }\n}\nexport function tryItem(n, xs) {\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return undefined;\n }\n else if (i === n) {\n return some(FSharpList__get_Head(xs_1));\n }\n else {\n i_mut = (i + 1);\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n return loop(0, xs);\n}\nexport function item(n, xs) {\n return FSharpList__get_Item_Z524259A4(xs, n);\n}\nexport function filter(f, xs) {\n const root = FSharpList_get_Empty();\n const node = fold((acc, x) => {\n if (f(x)) {\n const t = new FSharpList(x, undefined);\n acc.tail = t;\n return t;\n }\n else {\n return acc;\n }\n }, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function partition(f, xs) {\n const matchValue = FSharpList_get_Empty();\n const root2 = FSharpList_get_Empty();\n const root1 = matchValue;\n const patternInput_1 = fold((tupledArg, x) => {\n let t, t_2;\n const lacc = tupledArg[0];\n const racc = tupledArg[1];\n if (f(x)) {\n return [(t = (new FSharpList(x, undefined)), (lacc.tail = t, t)), racc];\n }\n else {\n return [lacc, (t_2 = (new FSharpList(x, undefined)), (racc.tail = t_2, t_2))];\n }\n }, [root1, root2], xs);\n const t_4 = FSharpList_get_Empty();\n patternInput_1[0].tail = t_4;\n const t_5 = FSharpList_get_Empty();\n patternInput_1[1].tail = t_5;\n return [FSharpList__get_Tail(root1), FSharpList__get_Tail(root2)];\n}\nexport function choose(f, xs) {\n const root = FSharpList_get_Empty();\n const node = fold((acc, x) => {\n const matchValue = f(x);\n if (matchValue == null) {\n return acc;\n }\n else {\n const t = new FSharpList(value_1(matchValue), undefined);\n acc.tail = t;\n return t;\n }\n }, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function contains(value, xs, eq) {\n return tryFindIndex((v) => eq.Equals(value, v), xs) != null;\n}\nexport function initialize(n, f) {\n let xs, t;\n const root = FSharpList_get_Empty();\n let node = root;\n for (let i = 0; i <= (n - 1); i++) {\n node = ((xs = node, (t = (new FSharpList(f(i), undefined)), (xs.tail = t, t))));\n }\n const xs_2 = node;\n const t_2 = FSharpList_get_Empty();\n xs_2.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function replicate(n, x) {\n return initialize(n, (_arg) => x);\n}\nexport function reduce(f, xs) {\n if (FSharpList__get_IsEmpty(xs)) {\n throw new Error(SR_inputWasEmpty);\n }\n else {\n return fold(f, head(xs), tail(xs));\n }\n}\nexport function reduceBack(f, xs) {\n if (FSharpList__get_IsEmpty(xs)) {\n throw new Error(SR_inputWasEmpty);\n }\n else {\n return foldBack(f, tail(xs), head(xs));\n }\n}\nexport function forAll(f, xs) {\n return fold((acc, x) => (acc && f(x)), true, xs);\n}\nexport function forAll2(f, xs, ys) {\n return fold2((acc, x, y) => (acc && f(x, y)), true, xs, ys);\n}\nexport function exists(f, xs) {\n return tryFindIndex(f, xs) != null;\n}\nexport function exists2(f_mut, xs_mut, ys_mut) {\n exists2: while (true) {\n const f = f_mut, xs = xs_mut, ys = ys_mut;\n const matchValue = FSharpList__get_IsEmpty(xs);\n const matchValue_1 = FSharpList__get_IsEmpty(ys);\n let matchResult;\n if (matchValue) {\n if (matchValue_1) {\n matchResult = 0;\n }\n else {\n matchResult = 2;\n }\n }\n else if (matchValue_1) {\n matchResult = 2;\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return false;\n case 1:\n if (f(FSharpList__get_Head(xs), FSharpList__get_Head(ys))) {\n return true;\n }\n else {\n f_mut = f;\n xs_mut = FSharpList__get_Tail(xs);\n ys_mut = FSharpList__get_Tail(ys);\n continue exists2;\n }\n default:\n throw new Error((SR_differentLengths + \"\\\\nParameter name: \") + \"list2\");\n }\n break;\n }\n}\nexport function unzip(xs) {\n return foldBack((tupledArg, tupledArg_1) => [FSharpList_Cons_305B8EAC(tupledArg[0], tupledArg_1[0]), FSharpList_Cons_305B8EAC(tupledArg[1], tupledArg_1[1])], xs, [FSharpList_get_Empty(), FSharpList_get_Empty()]);\n}\nexport function unzip3(xs) {\n return foldBack((tupledArg, tupledArg_1) => [FSharpList_Cons_305B8EAC(tupledArg[0], tupledArg_1[0]), FSharpList_Cons_305B8EAC(tupledArg[1], tupledArg_1[1]), FSharpList_Cons_305B8EAC(tupledArg[2], tupledArg_1[2])], xs, [FSharpList_get_Empty(), FSharpList_get_Empty(), FSharpList_get_Empty()]);\n}\nexport function zip(xs, ys) {\n return map2((x, y) => [x, y], xs, ys);\n}\nexport function zip3(xs, ys, zs) {\n return map3((x, y, z) => [x, y, z], xs, ys, zs);\n}\nexport function sortWith(comparer, xs) {\n const arr = toArray(xs);\n arr.sort(comparer);\n return ofArray(arr);\n}\nexport function sort(xs, comparer) {\n return sortWith((x, y) => comparer.Compare(x, y), xs);\n}\nexport function sortBy(projection, xs, comparer) {\n return sortWith((x, y) => comparer.Compare(projection(x), projection(y)), xs);\n}\nexport function sortDescending(xs, comparer) {\n return sortWith((x, y) => (comparer.Compare(x, y) * -1), xs);\n}\nexport function sortByDescending(projection, xs, comparer) {\n return sortWith((x, y) => (comparer.Compare(projection(x), projection(y)) * -1), xs);\n}\nexport function sum(xs, adder) {\n return fold((acc, x) => adder.Add(acc, x), adder.GetZero(), xs);\n}\nexport function sumBy(f, xs, adder) {\n return fold((acc, x) => adder.Add(acc, f(x)), adder.GetZero(), xs);\n}\nexport function maxBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? y : x), xs);\n}\nexport function max(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? y : x), xs);\n}\nexport function minBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? x : y), xs);\n}\nexport function min(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? x : y), xs);\n}\nexport function average(xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count = ((count + 1) | 0);\n return averager.Add(acc, x);\n }, averager.GetZero(), xs);\n return averager.DivideByInt(total, count);\n}\nexport function averageBy(f, xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count = ((count + 1) | 0);\n return averager.Add(acc, f(x));\n }, averager.GetZero(), xs);\n return averager.DivideByInt(total, count);\n}\nexport function permute(f, xs) {\n return ofArray(permute_1(f, toArray(xs)));\n}\nexport function chunkBySize(chunkSize, xs) {\n return ofArray(map_1(ofArray, chunkBySize_1(chunkSize, toArray(xs))));\n}\nexport function allPairs(xs, ys) {\n const root = FSharpList_get_Empty();\n let node = root;\n iterate((x) => {\n iterate((y) => {\n let xs_1, t;\n node = ((xs_1 = node, (t = (new FSharpList([x, y], undefined)), (xs_1.tail = t, t))));\n }, ys);\n }, xs);\n const xs_3 = node;\n const t_2 = FSharpList_get_Empty();\n xs_3.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function skip(count_mut, xs_mut) {\n skip: while (true) {\n const count = count_mut, xs = xs_mut;\n if (count <= 0) {\n return xs;\n }\n else if (FSharpList__get_IsEmpty(xs)) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"list\");\n }\n else {\n count_mut = (count - 1);\n xs_mut = FSharpList__get_Tail(xs);\n continue skip;\n }\n break;\n }\n}\nexport function skipWhile(predicate_mut, xs_mut) {\n skipWhile: while (true) {\n const predicate = predicate_mut, xs = xs_mut;\n if (FSharpList__get_IsEmpty(xs)) {\n return xs;\n }\n else if (!predicate(FSharpList__get_Head(xs))) {\n return xs;\n }\n else {\n predicate_mut = predicate;\n xs_mut = FSharpList__get_Tail(xs);\n continue skipWhile;\n }\n break;\n }\n}\nexport function take(count, xs) {\n if (count < 0) {\n throw new Error((SR_inputMustBeNonNegative + \"\\\\nParameter name: \") + \"count\");\n }\n const loop = (i_mut, acc_mut, xs_1_mut) => {\n let t;\n loop: while (true) {\n const i = i_mut, acc = acc_mut, xs_1 = xs_1_mut;\n if (i <= 0) {\n return acc;\n }\n else if (FSharpList__get_IsEmpty(xs_1)) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"list\");\n }\n else {\n i_mut = (i - 1);\n acc_mut = ((t = (new FSharpList(FSharpList__get_Head(xs_1), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node = loop(count, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function takeWhile(predicate, xs) {\n const loop = (acc_mut, xs_1_mut) => {\n let t;\n loop: while (true) {\n const acc = acc_mut, xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return acc;\n }\n else if (!predicate(FSharpList__get_Head(xs_1))) {\n return acc;\n }\n else {\n acc_mut = ((t = (new FSharpList(FSharpList__get_Head(xs_1), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node = loop(root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function truncate(count, xs) {\n const loop = (i_mut, acc_mut, xs_1_mut) => {\n let t;\n loop: while (true) {\n const i = i_mut, acc = acc_mut, xs_1 = xs_1_mut;\n if (i <= 0) {\n return acc;\n }\n else if (FSharpList__get_IsEmpty(xs_1)) {\n return acc;\n }\n else {\n i_mut = (i - 1);\n acc_mut = ((t = (new FSharpList(FSharpList__get_Head(xs_1), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node = loop(count, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function getSlice(startIndex, endIndex, xs) {\n const len = length(xs) | 0;\n let startIndex_1;\n const index = defaultArg(startIndex, 0) | 0;\n startIndex_1 = ((index < 0) ? 0 : index);\n let endIndex_1;\n const index_1 = defaultArg(endIndex, len - 1) | 0;\n endIndex_1 = ((index_1 >= len) ? (len - 1) : index_1);\n if (endIndex_1 < startIndex_1) {\n return FSharpList_get_Empty();\n }\n else {\n return take((endIndex_1 - startIndex_1) + 1, skip(startIndex_1, xs));\n }\n}\nexport function splitAt(index, xs) {\n if (index < 0) {\n throw new Error((SR_inputMustBeNonNegative + \"\\\\nParameter name: \") + \"index\");\n }\n if (index > FSharpList__get_Length(xs)) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"index\");\n }\n return [take(index, xs), skip(index, xs)];\n}\nexport function exactlyOne(xs) {\n if (FSharpList__get_IsEmpty(xs)) {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"list\");\n }\n else if (FSharpList__get_IsEmpty(FSharpList__get_Tail(xs))) {\n return FSharpList__get_Head(xs);\n }\n else {\n throw new Error((SR_inputSequenceTooLong + \"\\\\nParameter name: \") + \"list\");\n }\n}\nexport function tryExactlyOne(xs) {\n if (!FSharpList__get_IsEmpty(xs) && FSharpList__get_IsEmpty(FSharpList__get_Tail(xs))) {\n return some(FSharpList__get_Head(xs));\n }\n else {\n return undefined;\n }\n}\nexport function where(predicate, xs) {\n return filter(predicate, xs);\n}\nexport function pairwise(xs) {\n return ofArray(pairwise_1(toArray(xs)));\n}\nexport function windowed(windowSize, xs) {\n return ofArray(map_1(ofArray, windowed_1(windowSize, toArray(xs))));\n}\nexport function splitInto(chunks, xs) {\n return ofArray(map_1(ofArray, splitInto_1(chunks, toArray(xs))));\n}\nexport function transpose(lists) {\n return ofArray(map_1(ofArray, transpose_1(map_1(toArray, Array.from(lists)))));\n}\nexport function insertAt(index, y, xs) {\n let i = -1;\n let isDone = false;\n const result = fold((acc, x) => {\n i = ((i + 1) | 0);\n if (i === index) {\n isDone = true;\n return FSharpList_Cons_305B8EAC(x, FSharpList_Cons_305B8EAC(y, acc));\n }\n else {\n return FSharpList_Cons_305B8EAC(x, acc);\n }\n }, FSharpList_get_Empty(), xs);\n return reverse(isDone ? result : (((i + 1) === index) ? FSharpList_Cons_305B8EAC(y, result) : (() => {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n })()));\n}\nexport function insertManyAt(index, ys, xs) {\n let i = -1;\n let isDone = false;\n const ys_1 = ofSeq(ys);\n const result = fold((acc, x) => {\n i = ((i + 1) | 0);\n if (i === index) {\n isDone = true;\n return FSharpList_Cons_305B8EAC(x, append(ys_1, acc));\n }\n else {\n return FSharpList_Cons_305B8EAC(x, acc);\n }\n }, FSharpList_get_Empty(), xs);\n return reverse(isDone ? result : (((i + 1) === index) ? append(ys_1, result) : (() => {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n })()));\n}\nexport function removeAt(index, xs) {\n let i = -1;\n let isDone = false;\n const ys = filter((_arg) => {\n i = ((i + 1) | 0);\n if (i === index) {\n isDone = true;\n return false;\n }\n else {\n return true;\n }\n }, xs);\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return ys;\n}\nexport function removeManyAt(index, count, xs) {\n let i = -1;\n let status = -1;\n const ys = filter((_arg) => {\n i = ((i + 1) | 0);\n if (i === index) {\n status = 0;\n return false;\n }\n else if (i > index) {\n if (i < (index + count)) {\n return false;\n }\n else {\n status = 1;\n return true;\n }\n }\n else {\n return true;\n }\n }, xs);\n const status_1 = (((status === 0) && ((i + 1) === (index + count))) ? 1 : status) | 0;\n if (status_1 < 1) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + ((status_1 < 0) ? \"index\" : \"count\"));\n }\n return ys;\n}\nexport function updateAt(index, y, xs) {\n let isDone = false;\n const ys = mapIndexed((i, x) => {\n if (i === index) {\n isDone = true;\n return y;\n }\n else {\n return x;\n }\n }, xs);\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return ys;\n}\n","import { clear, defaultOf, equals, isDisposable, isArrayLike, toIterator, disposeSafe, getEnumerator } from \"./Util.js\";\nimport { toString } from \"./Types.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { some, value as value_1 } from \"./Option.js\";\nimport { Operators_Lock, Operators_NullArg } from \"./FSharp.Core.js\";\nimport { chunkBySize as chunkBySize_1, permute as permute_1, transpose as transpose_1, map as map_1, windowed as windowed_1, splitInto as splitInto_1, pairwise as pairwise_1, scanBack as scanBack_1, reverse as reverse_1, mapFoldBack as mapFoldBack_1, mapFold as mapFold_1, tryItem as tryItem_1, tryHead as tryHead_1, foldBack2 as foldBack2_1, foldBack as foldBack_1, tryFindIndexBack as tryFindIndexBack_1, tryFindBack as tryFindBack_1, singleton as singleton_1 } from \"./Array.js\";\nimport { length as length_1, tryItem as tryItem_2, isEmpty as isEmpty_1, tryHead as tryHead_2, ofSeq as ofSeq_1, ofArray as ofArray_1, toArray as toArray_1, FSharpList } from \"./List.js\";\nimport { SR_indexOutOfBounds } from \"./Global.js\";\nexport const SR_enumerationAlreadyFinished = \"Enumeration already finished.\";\nexport const SR_enumerationNotStarted = \"Enumeration has not started. Call MoveNext.\";\nexport const SR_inputSequenceEmpty = \"The input sequence was empty.\";\nexport const SR_inputSequenceTooLong = \"The input sequence contains more than one element.\";\nexport const SR_keyNotFoundAlt = \"An index satisfying the predicate was not found in the collection.\";\nexport const SR_notEnoughElements = \"The input sequence has an insufficient number of elements.\";\nexport const SR_resetNotSupported = \"Reset is not supported on this enumerator.\";\nexport function Enumerator_noReset() {\n throw new Error(SR_resetNotSupported);\n}\nexport function Enumerator_notStarted() {\n throw new Error(SR_enumerationNotStarted);\n}\nexport function Enumerator_alreadyFinished() {\n throw new Error(SR_enumerationAlreadyFinished);\n}\nexport class Enumerator_Seq {\n constructor(f) {\n this.f = f;\n }\n toString() {\n const xs = this;\n let i = 0;\n let str = \"seq [\";\n const e = getEnumerator(xs);\n try {\n while ((i < 4) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n if (i > 0) {\n str = (str + \"; \");\n }\n str = (str + toString(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()));\n i = ((i + 1) | 0);\n }\n if (i === 4) {\n str = (str + \"; ...\");\n }\n return str + \"]\";\n }\n finally {\n disposeSafe(e);\n }\n }\n GetEnumerator() {\n const x = this;\n return x.f();\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const x = this;\n return x.f();\n }\n}\nexport function Enumerator_Seq_$reflection(gen0) {\n return class_type(\"SeqModule.Enumerator.Seq\", [gen0], Enumerator_Seq);\n}\nexport function Enumerator_Seq_$ctor_673A07F2(f) {\n return new Enumerator_Seq(f);\n}\nexport class Enumerator_FromFunctions$1 {\n constructor(current, next, dispose) {\n this.current = current;\n this.next = next;\n this.dispose = dispose;\n }\n \"System.Collections.Generic.IEnumerator`1.get_Current\"() {\n const _ = this;\n return _.current();\n }\n \"System.Collections.IEnumerator.get_Current\"() {\n const _ = this;\n return _.current();\n }\n \"System.Collections.IEnumerator.MoveNext\"() {\n const _ = this;\n return _.next();\n }\n \"System.Collections.IEnumerator.Reset\"() {\n Enumerator_noReset();\n }\n Dispose() {\n const _ = this;\n _.dispose();\n }\n}\nexport function Enumerator_FromFunctions$1_$reflection(gen0) {\n return class_type(\"SeqModule.Enumerator.FromFunctions`1\", [gen0], Enumerator_FromFunctions$1);\n}\nexport function Enumerator_FromFunctions$1_$ctor_58C54629(current, next, dispose) {\n return new Enumerator_FromFunctions$1(current, next, dispose);\n}\nexport function Enumerator_cast(e) {\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => e[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), () => e[\"System.Collections.IEnumerator.MoveNext\"](), () => {\n disposeSafe(e);\n });\n}\nexport function Enumerator_concat(sources) {\n let outerOpt = undefined;\n let innerOpt = undefined;\n let started = false;\n let finished = false;\n let curr = undefined;\n const finish = () => {\n finished = true;\n if (innerOpt != null) {\n const inner = value_1(innerOpt);\n try {\n disposeSafe(inner);\n }\n finally {\n innerOpt = undefined;\n }\n }\n if (outerOpt != null) {\n const outer = value_1(outerOpt);\n try {\n disposeSafe(outer);\n }\n finally {\n outerOpt = undefined;\n }\n }\n };\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => {\n if (!started) {\n Enumerator_notStarted();\n }\n else if (finished) {\n Enumerator_alreadyFinished();\n }\n if (curr != null) {\n return value_1(curr);\n }\n else {\n return Enumerator_alreadyFinished();\n }\n }, () => {\n let copyOfStruct;\n if (!started) {\n started = true;\n }\n if (finished) {\n return false;\n }\n else {\n let res = undefined;\n while (res == null) {\n const outerOpt_1 = outerOpt;\n const innerOpt_1 = innerOpt;\n if (outerOpt_1 != null) {\n if (innerOpt_1 != null) {\n const inner_1 = value_1(innerOpt_1);\n if (inner_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n curr = some(inner_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n res = true;\n }\n else {\n try {\n disposeSafe(inner_1);\n }\n finally {\n innerOpt = undefined;\n }\n }\n }\n else {\n const outer_1 = value_1(outerOpt_1);\n if (outer_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const ie = outer_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n innerOpt = ((copyOfStruct = ie, getEnumerator(copyOfStruct)));\n }\n else {\n finish();\n res = false;\n }\n }\n }\n else {\n outerOpt = getEnumerator(sources);\n }\n }\n return value_1(res);\n }\n }, () => {\n if (!finished) {\n finish();\n }\n });\n}\nexport function Enumerator_enumerateThenFinally(f, e) {\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => e[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), () => e[\"System.Collections.IEnumerator.MoveNext\"](), () => {\n try {\n disposeSafe(e);\n }\n finally {\n f();\n }\n });\n}\nexport function Enumerator_generateWhileSome(openf, compute, closef) {\n let started = false;\n let curr = undefined;\n let state = some(openf());\n const dispose = () => {\n if (state != null) {\n const x_1 = value_1(state);\n try {\n closef(x_1);\n }\n finally {\n state = undefined;\n }\n }\n };\n const finish = () => {\n try {\n dispose();\n }\n finally {\n curr = undefined;\n }\n };\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => {\n if (!started) {\n Enumerator_notStarted();\n }\n if (curr != null) {\n return value_1(curr);\n }\n else {\n return Enumerator_alreadyFinished();\n }\n }, () => {\n if (!started) {\n started = true;\n }\n if (state != null) {\n const s = value_1(state);\n let matchValue_1;\n try {\n matchValue_1 = compute(s);\n }\n catch (matchValue) {\n finish();\n throw matchValue;\n }\n if (matchValue_1 != null) {\n curr = matchValue_1;\n return true;\n }\n else {\n finish();\n return false;\n }\n }\n else {\n return false;\n }\n }, dispose);\n}\nexport function Enumerator_unfold(f, state) {\n let curr = undefined;\n let acc = state;\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => {\n if (curr != null) {\n const x = value_1(curr)[0];\n const st = value_1(curr)[1];\n return x;\n }\n else {\n return Enumerator_notStarted();\n }\n }, () => {\n curr = f(acc);\n if (curr != null) {\n const x_1 = value_1(curr)[0];\n const st_1 = value_1(curr)[1];\n acc = st_1;\n return true;\n }\n else {\n return false;\n }\n }, () => {\n });\n}\nexport function indexNotFound() {\n throw new Error(SR_keyNotFoundAlt);\n}\nexport function checkNonNull(argName, arg) {\n if (arg == null) {\n Operators_NullArg(argName);\n }\n}\nexport function mkSeq(f) {\n return Enumerator_Seq_$ctor_673A07F2(f);\n}\nexport function ofSeq(xs) {\n checkNonNull(\"source\", xs);\n return getEnumerator(xs);\n}\nexport function delay(generator) {\n return mkSeq(() => getEnumerator(generator()));\n}\nexport function concat(sources) {\n return mkSeq(() => Enumerator_concat(sources));\n}\nexport function unfold(generator, state) {\n return mkSeq(() => Enumerator_unfold(generator, state));\n}\nexport function empty() {\n return delay(() => (new Array(0)));\n}\nexport function singleton(x) {\n return delay(() => singleton_1(x));\n}\nexport function ofArray(arr) {\n return arr;\n}\nexport function toArray(xs) {\n if (xs instanceof FSharpList) {\n const a = xs;\n return toArray_1(a);\n }\n else {\n return Array.from(xs);\n }\n}\nexport function ofList(xs) {\n return xs;\n}\nexport function toList(xs) {\n if (isArrayLike(xs)) {\n return ofArray_1(xs);\n }\n else if (xs instanceof FSharpList) {\n return xs;\n }\n else {\n return ofSeq_1(xs);\n }\n}\nexport function generate(create, compute, dispose) {\n return mkSeq(() => Enumerator_generateWhileSome(create, compute, dispose));\n}\nexport function generateIndexed(create, compute, dispose) {\n return mkSeq(() => {\n let i = -1;\n return Enumerator_generateWhileSome(create, (x) => {\n i = ((i + 1) | 0);\n return compute(i, x);\n }, dispose);\n });\n}\nexport function append(xs, ys) {\n return concat([xs, ys]);\n}\nexport function cast(xs) {\n return mkSeq(() => {\n checkNonNull(\"source\", xs);\n return Enumerator_cast(getEnumerator(xs));\n });\n}\nexport function choose(chooser, xs) {\n return generate(() => ofSeq(xs), (e) => {\n let curr = undefined;\n while ((curr == null) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n curr = chooser(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return curr;\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function compareWith(comparer, xs, ys) {\n const e1 = ofSeq(xs);\n try {\n const e2 = ofSeq(ys);\n try {\n let c = 0;\n let b1 = e1[\"System.Collections.IEnumerator.MoveNext\"]();\n let b2 = e2[\"System.Collections.IEnumerator.MoveNext\"]();\n while (((c === 0) && b1) && b2) {\n c = (comparer(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) | 0);\n if (c === 0) {\n b1 = e1[\"System.Collections.IEnumerator.MoveNext\"]();\n b2 = e2[\"System.Collections.IEnumerator.MoveNext\"]();\n }\n }\n return ((c !== 0) ? c : (b1 ? 1 : (b2 ? -1 : 0))) | 0;\n }\n finally {\n disposeSafe(e2);\n }\n }\n finally {\n disposeSafe(e1);\n }\n}\nexport function contains(value, xs, comparer) {\n const e = ofSeq(xs);\n try {\n let found = false;\n while (!found && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n found = comparer.Equals(value, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return found;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function enumerateFromFunctions(create, moveNext, current) {\n return generate(create, (x) => (moveNext(x) ? some(current(x)) : undefined), (x_1) => {\n const matchValue = x_1;\n if (isDisposable(matchValue)) {\n const id = matchValue;\n disposeSafe(id);\n }\n });\n}\nexport function enumerateThenFinally(source, compensation) {\n const compensation_1 = compensation;\n return mkSeq(() => {\n try {\n return Enumerator_enumerateThenFinally(compensation_1, ofSeq(source));\n }\n catch (matchValue) {\n compensation_1();\n throw matchValue;\n }\n });\n}\nexport function enumerateUsing(resource, source) {\n const compensation = () => {\n if (equals(resource, defaultOf())) {\n }\n else {\n let copyOfStruct = resource;\n disposeSafe(copyOfStruct);\n }\n };\n return mkSeq(() => {\n try {\n return Enumerator_enumerateThenFinally(compensation, ofSeq(source(resource)));\n }\n catch (matchValue_1) {\n compensation();\n throw matchValue_1;\n }\n });\n}\nexport function enumerateWhile(guard, xs) {\n return concat(unfold((i) => (guard() ? [xs, i + 1] : undefined), 0));\n}\nexport function filter(f, xs) {\n return choose((x) => {\n if (f(x)) {\n return some(x);\n }\n else {\n return undefined;\n }\n }, xs);\n}\nexport function exists(predicate, xs) {\n const e = ofSeq(xs);\n try {\n let found = false;\n while (!found && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n found = predicate(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return found;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function exists2(predicate, xs, ys) {\n const e1 = ofSeq(xs);\n try {\n const e2 = ofSeq(ys);\n try {\n let found = false;\n while ((!found && e1[\"System.Collections.IEnumerator.MoveNext\"]()) && e2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n found = predicate(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return found;\n }\n finally {\n disposeSafe(e2);\n }\n }\n finally {\n disposeSafe(e1);\n }\n}\nexport function exactlyOne(xs) {\n const e = ofSeq(xs);\n try {\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const v = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n throw new Error((SR_inputSequenceTooLong + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return v;\n }\n }\n else {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"source\");\n }\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function tryExactlyOne(xs) {\n const e = ofSeq(xs);\n try {\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const v = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? undefined : some(v);\n }\n else {\n return undefined;\n }\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function tryFind(predicate, xs) {\n const e = ofSeq(xs);\n try {\n let res = undefined;\n while ((res == null) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const c = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n if (predicate(c)) {\n res = some(c);\n }\n }\n return res;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function find(predicate, xs) {\n const matchValue = tryFind(predicate, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFindBack(predicate, xs) {\n return tryFindBack_1(predicate, toArray(xs));\n}\nexport function findBack(predicate, xs) {\n const matchValue = tryFindBack(predicate, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFindIndex(predicate, xs) {\n const e = ofSeq(xs);\n try {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n if (predicate(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) {\n return i;\n }\n else {\n i_mut = (i + 1);\n continue loop;\n }\n }\n else {\n return undefined;\n }\n break;\n }\n };\n return loop(0);\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function findIndex(predicate, xs) {\n const matchValue = tryFindIndex(predicate, xs);\n if (matchValue == null) {\n indexNotFound();\n return -1;\n }\n else {\n return value_1(matchValue) | 0;\n }\n}\nexport function tryFindIndexBack(predicate, xs) {\n return tryFindIndexBack_1(predicate, toArray(xs));\n}\nexport function findIndexBack(predicate, xs) {\n const matchValue = tryFindIndexBack(predicate, xs);\n if (matchValue == null) {\n indexNotFound();\n return -1;\n }\n else {\n return value_1(matchValue) | 0;\n }\n}\nexport function fold(folder, state, xs) {\n const e = ofSeq(xs);\n try {\n let acc = state;\n while (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n acc = folder(acc, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return acc;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function foldBack(folder, xs, state) {\n return foldBack_1(folder, toArray(xs), state);\n}\nexport function fold2(folder, state, xs, ys) {\n const e1 = ofSeq(xs);\n try {\n const e2 = ofSeq(ys);\n try {\n let acc = state;\n while (e1[\"System.Collections.IEnumerator.MoveNext\"]() && e2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n acc = folder(acc, e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return acc;\n }\n finally {\n disposeSafe(e2);\n }\n }\n finally {\n disposeSafe(e1);\n }\n}\nexport function foldBack2(folder, xs, ys, state) {\n return foldBack2_1(folder, toArray(xs), toArray(ys), state);\n}\nexport function forAll(predicate, xs) {\n return !exists((x) => !predicate(x), xs);\n}\nexport function forAll2(predicate, xs, ys) {\n return !exists2((x, y) => !predicate(x, y), xs, ys);\n}\nexport function tryHead(xs) {\n if (isArrayLike(xs)) {\n return tryHead_1(xs);\n }\n else if (xs instanceof FSharpList) {\n return tryHead_2(xs);\n }\n else {\n const e = ofSeq(xs);\n try {\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined;\n }\n finally {\n disposeSafe(e);\n }\n }\n}\nexport function head(xs) {\n const matchValue = tryHead(xs);\n if (matchValue == null) {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function initialize(count, f) {\n return unfold((i) => ((i < count) ? [f(i), i + 1] : undefined), 0);\n}\nexport function initializeInfinite(f) {\n return initialize(2147483647, f);\n}\nexport function isEmpty(xs) {\n if (isArrayLike(xs)) {\n const a = xs;\n return a.length === 0;\n }\n else if (xs instanceof FSharpList) {\n return isEmpty_1(xs);\n }\n else {\n const e = ofSeq(xs);\n try {\n return !e[\"System.Collections.IEnumerator.MoveNext\"]();\n }\n finally {\n disposeSafe(e);\n }\n }\n}\nexport function tryItem(index, xs) {\n if (isArrayLike(xs)) {\n return tryItem_1(index, xs);\n }\n else if (xs instanceof FSharpList) {\n return tryItem_2(index, xs);\n }\n else {\n const e = ofSeq(xs);\n try {\n const loop = (index_1_mut) => {\n loop: while (true) {\n const index_1 = index_1_mut;\n if (!e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return undefined;\n }\n else if (index_1 === 0) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n index_1_mut = (index_1 - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(index);\n }\n finally {\n disposeSafe(e);\n }\n }\n}\nexport function item(index, xs) {\n const matchValue = tryItem(index, xs);\n if (matchValue == null) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"index\");\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function iterate(action, xs) {\n fold((unitVar, x) => {\n action(x);\n }, undefined, xs);\n}\nexport function iterate2(action, xs, ys) {\n fold2((unitVar, x, y) => {\n action(x, y);\n }, undefined, xs, ys);\n}\nexport function iterateIndexed(action, xs) {\n fold((i, x) => {\n action(i, x);\n return (i + 1) | 0;\n }, 0, xs);\n}\nexport function iterateIndexed2(action, xs, ys) {\n fold2((i, x, y) => {\n action(i, x, y);\n return (i + 1) | 0;\n }, 0, xs, ys);\n}\nexport function tryLast(xs) {\n const e = ofSeq(xs);\n try {\n const loop = (acc_mut) => {\n loop: while (true) {\n const acc = acc_mut;\n if (!e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return acc;\n }\n else {\n acc_mut = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n continue loop;\n }\n break;\n }\n };\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(loop(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function last(xs) {\n const matchValue = tryLast(xs);\n if (matchValue == null) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function length(xs) {\n if (isArrayLike(xs)) {\n const a = xs;\n return a.length | 0;\n }\n else if (xs instanceof FSharpList) {\n return length_1(xs) | 0;\n }\n else {\n const e = ofSeq(xs);\n try {\n let count = 0;\n while (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n count = ((count + 1) | 0);\n }\n return count | 0;\n }\n finally {\n disposeSafe(e);\n }\n }\n}\nexport function map(mapping, xs) {\n return generate(() => ofSeq(xs), (e) => (e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(mapping(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined), (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function mapIndexed(mapping, xs) {\n return generateIndexed(() => ofSeq(xs), (i, e) => (e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(mapping(i, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined), (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function indexed(xs) {\n return mapIndexed((i, x) => [i, x], xs);\n}\nexport function map2(mapping, xs, ys) {\n return generate(() => [ofSeq(xs), ofSeq(ys)], (tupledArg) => {\n const e1 = tupledArg[0];\n const e2 = tupledArg[1];\n return (e1[\"System.Collections.IEnumerator.MoveNext\"]() && e2[\"System.Collections.IEnumerator.MoveNext\"]()) ? some(mapping(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined;\n }, (tupledArg_1) => {\n try {\n disposeSafe(tupledArg_1[0]);\n }\n finally {\n disposeSafe(tupledArg_1[1]);\n }\n });\n}\nexport function mapIndexed2(mapping, xs, ys) {\n return generateIndexed(() => [ofSeq(xs), ofSeq(ys)], (i, tupledArg) => {\n const e1 = tupledArg[0];\n const e2 = tupledArg[1];\n return (e1[\"System.Collections.IEnumerator.MoveNext\"]() && e2[\"System.Collections.IEnumerator.MoveNext\"]()) ? some(mapping(i, e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined;\n }, (tupledArg_1) => {\n try {\n disposeSafe(tupledArg_1[0]);\n }\n finally {\n disposeSafe(tupledArg_1[1]);\n }\n });\n}\nexport function map3(mapping, xs, ys, zs) {\n return generate(() => [ofSeq(xs), ofSeq(ys), ofSeq(zs)], (tupledArg) => {\n const e1 = tupledArg[0];\n const e2 = tupledArg[1];\n const e3 = tupledArg[2];\n return ((e1[\"System.Collections.IEnumerator.MoveNext\"]() && e2[\"System.Collections.IEnumerator.MoveNext\"]()) && e3[\"System.Collections.IEnumerator.MoveNext\"]()) ? some(mapping(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e3[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined;\n }, (tupledArg_1) => {\n try {\n disposeSafe(tupledArg_1[0]);\n }\n finally {\n try {\n disposeSafe(tupledArg_1[1]);\n }\n finally {\n disposeSafe(tupledArg_1[2]);\n }\n }\n });\n}\nexport function readOnly(xs) {\n checkNonNull(\"source\", xs);\n return map((x) => x, xs);\n}\nexport class CachedSeq$1 {\n constructor(cleanup, res) {\n this.cleanup = cleanup;\n this.res = res;\n }\n Dispose() {\n const _ = this;\n _.cleanup();\n }\n GetEnumerator() {\n const _ = this;\n return getEnumerator(_.res);\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const _ = this;\n return getEnumerator(_.res);\n }\n}\nexport function CachedSeq$1_$reflection(gen0) {\n return class_type(\"SeqModule.CachedSeq`1\", [gen0], CachedSeq$1);\n}\nexport function CachedSeq$1_$ctor_Z7A8347D4(cleanup, res) {\n return new CachedSeq$1(cleanup, res);\n}\nexport function CachedSeq$1__Clear(_) {\n _.cleanup();\n}\nexport function cache(source) {\n checkNonNull(\"source\", source);\n const prefix = [];\n let enumeratorR = undefined;\n return CachedSeq$1_$ctor_Z7A8347D4(() => {\n Operators_Lock(prefix, () => {\n clear(prefix);\n let matchResult, e;\n if (enumeratorR != null) {\n if (value_1(enumeratorR) != null) {\n matchResult = 0;\n e = value_1(value_1(enumeratorR));\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n disposeSafe(e);\n break;\n }\n }\n enumeratorR = undefined;\n });\n }, unfold((i_1) => Operators_Lock(prefix, () => {\n if (i_1 < prefix.length) {\n return [prefix[i_1], i_1 + 1];\n }\n else {\n if (i_1 >= prefix.length) {\n let optEnumerator_2;\n if (enumeratorR != null) {\n optEnumerator_2 = value_1(enumeratorR);\n }\n else {\n const optEnumerator = getEnumerator(source);\n enumeratorR = some(optEnumerator);\n optEnumerator_2 = optEnumerator;\n }\n if (optEnumerator_2 == null) {\n }\n else {\n const enumerator = value_1(optEnumerator_2);\n if (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n void (prefix.push(enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()));\n }\n else {\n disposeSafe(enumerator);\n enumeratorR = some(undefined);\n }\n }\n }\n if (i_1 < prefix.length) {\n return [prefix[i_1], i_1 + 1];\n }\n else {\n return undefined;\n }\n }\n }), 0));\n}\nexport function allPairs(xs, ys) {\n const ysCache = cache(ys);\n return delay(() => concat(map((x) => map((y) => [x, y], ysCache), xs)));\n}\nexport function mapFold(mapping, state, xs) {\n const patternInput = mapFold_1(mapping, state, toArray(xs));\n return [readOnly(patternInput[0]), patternInput[1]];\n}\nexport function mapFoldBack(mapping, xs, state) {\n const patternInput = mapFoldBack_1(mapping, toArray(xs), state);\n return [readOnly(patternInput[0]), patternInput[1]];\n}\nexport function tryPick(chooser, xs) {\n const e = ofSeq(xs);\n try {\n let res = undefined;\n while ((res == null) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n res = chooser(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return res;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function pick(chooser, xs) {\n const matchValue = tryPick(chooser, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function reduce(folder, xs) {\n const e = ofSeq(xs);\n try {\n const loop = (acc_mut) => {\n loop: while (true) {\n const acc = acc_mut;\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n acc_mut = folder(acc, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n continue loop;\n }\n else {\n return acc;\n }\n break;\n }\n };\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return loop(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n throw new Error(SR_inputSequenceEmpty);\n }\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function reduceBack(folder, xs) {\n const arr = toArray(xs);\n if (arr.length > 0) {\n return arr.reduceRight(folder);\n }\n else {\n throw new Error(SR_inputSequenceEmpty);\n }\n}\nexport function replicate(n, x) {\n return initialize(n, (_arg) => x);\n}\nexport function reverse(xs) {\n return delay(() => ofArray(reverse_1(toArray(xs))));\n}\nexport function scan(folder, state, xs) {\n return delay(() => {\n let acc = state;\n return concat([singleton(state), map((x) => {\n acc = folder(acc, x);\n return acc;\n }, xs)]);\n });\n}\nexport function scanBack(folder, xs, state) {\n return delay(() => ofArray(scanBack_1(folder, toArray(xs), state)));\n}\nexport function skip(count, source) {\n return mkSeq(() => {\n const e = ofSeq(source);\n try {\n for (let _ = 1; _ <= count; _++) {\n if (!e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"source\");\n }\n }\n return Enumerator_enumerateThenFinally(() => {\n }, e);\n }\n catch (matchValue) {\n disposeSafe(e);\n throw matchValue;\n }\n });\n}\nexport function skipWhile(predicate, xs) {\n return delay(() => {\n let skipped = true;\n return filter((x) => {\n if (skipped) {\n skipped = predicate(x);\n }\n return !skipped;\n }, xs);\n });\n}\nexport function tail(xs) {\n return skip(1, xs);\n}\nexport function take(count, xs) {\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if (i < count) {\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"source\");\n }\n }\n else {\n return undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function takeWhile(predicate, xs) {\n return generate(() => ofSeq(xs), (e) => ((e[\"System.Collections.IEnumerator.MoveNext\"]() && predicate(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined), (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function truncate(count, xs) {\n return generateIndexed(() => ofSeq(xs), (i, e) => (((i < count) && e[\"System.Collections.IEnumerator.MoveNext\"]()) ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined), (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function zip(xs, ys) {\n return map2((x, y) => [x, y], xs, ys);\n}\nexport function zip3(xs, ys, zs) {\n return map3((x, y, z) => [x, y, z], xs, ys, zs);\n}\nexport function collect(mapping, xs) {\n return delay(() => concat(map(mapping, xs)));\n}\nexport function where(predicate, xs) {\n return filter(predicate, xs);\n}\nexport function pairwise(xs) {\n return delay(() => ofArray(pairwise_1(toArray(xs))));\n}\nexport function splitInto(chunks, xs) {\n return delay(() => ofArray(splitInto_1(chunks, toArray(xs))));\n}\nexport function windowed(windowSize, xs) {\n return delay(() => ofArray(windowed_1(windowSize, toArray(xs))));\n}\nexport function transpose(xss) {\n return delay(() => ofArray(map_1(ofArray, transpose_1(map_1(toArray, toArray(xss))))));\n}\nexport function sortWith(comparer, xs) {\n return delay(() => {\n const arr = toArray(xs);\n arr.sort(comparer);\n return ofArray(arr);\n });\n}\nexport function sort(xs, comparer) {\n return sortWith((x, y) => comparer.Compare(x, y), xs);\n}\nexport function sortBy(projection, xs, comparer) {\n return sortWith((x, y) => comparer.Compare(projection(x), projection(y)), xs);\n}\nexport function sortDescending(xs, comparer) {\n return sortWith((x, y) => (comparer.Compare(x, y) * -1), xs);\n}\nexport function sortByDescending(projection, xs, comparer) {\n return sortWith((x, y) => (comparer.Compare(projection(x), projection(y)) * -1), xs);\n}\nexport function sum(xs, adder) {\n return fold((acc, x) => adder.Add(acc, x), adder.GetZero(), xs);\n}\nexport function sumBy(f, xs, adder) {\n return fold((acc, x) => adder.Add(acc, f(x)), adder.GetZero(), xs);\n}\nexport function maxBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? y : x), xs);\n}\nexport function max(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? y : x), xs);\n}\nexport function minBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? x : y), xs);\n}\nexport function min(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? x : y), xs);\n}\nexport function average(xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count = ((count + 1) | 0);\n return averager.Add(acc, x);\n }, averager.GetZero(), xs);\n if (count === 0) {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return averager.DivideByInt(total, count);\n }\n}\nexport function averageBy(f, xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count = ((count + 1) | 0);\n return averager.Add(acc, f(x));\n }, averager.GetZero(), xs);\n if (count === 0) {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return averager.DivideByInt(total, count);\n }\n}\nexport function permute(f, xs) {\n return delay(() => ofArray(permute_1(f, toArray(xs))));\n}\nexport function chunkBySize(chunkSize, xs) {\n return delay(() => ofArray(chunkBySize_1(chunkSize, toArray(xs))));\n}\nexport function insertAt(index, y, xs) {\n let isDone = false;\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if ((isDone ? true : (i < index)) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else if (i === index) {\n isDone = true;\n return some(y);\n }\n else {\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function insertManyAt(index, ys, xs) {\n let status = -1;\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => [ofSeq(xs), ofSeq(ys)], (i, tupledArg) => {\n const e1 = tupledArg[0];\n const e2 = tupledArg[1];\n if (i === index) {\n status = 0;\n }\n let inserted;\n if (status === 0) {\n if (e2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n inserted = some(e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n status = 1;\n inserted = undefined;\n }\n }\n else {\n inserted = undefined;\n }\n if (inserted == null) {\n if (e1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n if (status < 1) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return undefined;\n }\n }\n else {\n return some(value_1(inserted));\n }\n }, (tupledArg_1) => {\n disposeSafe(tupledArg_1[0]);\n disposeSafe(tupledArg_1[1]);\n });\n}\nexport function removeAt(index, xs) {\n let isDone = false;\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if ((isDone ? true : (i < index)) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else if ((i === index) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n isDone = true;\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined;\n }\n else {\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function removeManyAt(index, count, xs) {\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if (i < index) {\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n }\n else {\n if (i === index) {\n for (let _ = 1; _ <= count; _++) {\n if (!e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"count\");\n }\n }\n }\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function updateAt(index, y, xs) {\n let isDone = false;\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if ((isDone ? true : (i < index)) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else if ((i === index) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n isDone = true;\n return some(y);\n }\n else {\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\n","import { disposeSafe, defaultOf, structuralHash, equals } from \"./Util.js\";\nimport { HashIdentity_Structural, ComparisonIdentity_Structural } from \"./FSharp.Collections.js\";\nimport { StringBuilder__Append_Z721C83C5 } from \"./System.Text.js\";\nexport const LanguagePrimitives_GenericEqualityComparer = {\n \"System.Collections.IEqualityComparer.Equals541DA560\"(x, y) {\n return equals(x, y);\n },\n \"System.Collections.IEqualityComparer.GetHashCode4E60E31B\"(x_1) {\n return structuralHash(x_1);\n },\n};\nexport const LanguagePrimitives_GenericEqualityERComparer = {\n \"System.Collections.IEqualityComparer.Equals541DA560\"(x, y) {\n return equals(x, y);\n },\n \"System.Collections.IEqualityComparer.GetHashCode4E60E31B\"(x_1) {\n return structuralHash(x_1);\n },\n};\nexport function LanguagePrimitives_FastGenericComparer() {\n return ComparisonIdentity_Structural();\n}\nexport function LanguagePrimitives_FastGenericComparerFromTable() {\n return ComparisonIdentity_Structural();\n}\nexport function LanguagePrimitives_FastGenericEqualityComparer() {\n return HashIdentity_Structural();\n}\nexport function LanguagePrimitives_FastGenericEqualityComparerFromTable() {\n return HashIdentity_Structural();\n}\nexport function Operators_Failure(message) {\n return new Error(message);\n}\nexport function Operators_FailurePattern(exn) {\n return exn.message;\n}\nexport function Operators_NullArg(x) {\n throw new Error(x);\n}\nexport function Operators_Using(resource, action) {\n try {\n return action(resource);\n }\n finally {\n if (equals(resource, defaultOf())) {\n }\n else {\n let copyOfStruct = resource;\n disposeSafe(copyOfStruct);\n }\n }\n}\nexport function Operators_Lock(_lockObj, action) {\n return action();\n}\nexport function ExtraTopLevelOperators_LazyPattern(input) {\n return input.Value;\n}\nexport function PrintfModule_PrintFormatToStringBuilderThen(continuation, builder, format) {\n return format.cont((s) => {\n StringBuilder__Append_Z721C83C5(builder, s);\n return continuation();\n });\n}\nexport function PrintfModule_PrintFormatToStringBuilder(builder, format) {\n return PrintfModule_PrintFormatToStringBuilderThen(() => {\n }, builder, format);\n}\n","import { record_type, bool_type, list_type, option_type, class_type } from \"./Reflection.js\";\nimport { some, value as value_3 } from \"./Option.js\";\nimport { structuralHash, toIterator, disposeSafe, getEnumerator, isArrayLike } from \"./Util.js\";\nimport { toString, Record } from \"./Types.js\";\nimport { fold as fold_2, cons, singleton as singleton_1, empty as empty_1, ofArrayWithTail, tail, head, isEmpty as isEmpty_1, FSharpList } from \"./List.js\";\nimport { fold as fold_1, fill, setItem } from \"./Array.js\";\nimport { join } from \"./String.js\";\nimport { exists as exists_1, cache, forAll as forAll_1, fold as fold_3, reduce, iterate as iterate_1, map as map_1 } from \"./Seq.js\";\nimport { HashSet__get_Comparer, HashSet_$ctor_Z6150332D, HashSet } from \"./MutableSet.js\";\nexport class SetTreeLeaf$1 {\n constructor(k) {\n this.k = k;\n }\n}\nexport function SetTreeLeaf$1_$reflection(gen0) {\n return class_type(\"Set.SetTreeLeaf`1\", [gen0], SetTreeLeaf$1);\n}\nexport function SetTreeLeaf$1_$ctor_2B595(k) {\n return new SetTreeLeaf$1(k);\n}\nexport function SetTreeLeaf$1__get_Key(_) {\n return _.k;\n}\nexport class SetTreeNode$1 extends SetTreeLeaf$1 {\n constructor(v, left, right, h) {\n super(v);\n this.left = left;\n this.right = right;\n this.h = (h | 0);\n }\n}\nexport function SetTreeNode$1_$reflection(gen0) {\n return class_type(\"Set.SetTreeNode`1\", [gen0], SetTreeNode$1, SetTreeLeaf$1_$reflection(gen0));\n}\nexport function SetTreeNode$1_$ctor_5F465FC9(v, left, right, h) {\n return new SetTreeNode$1(v, left, right, h);\n}\nexport function SetTreeNode$1__get_Left(_) {\n return _.left;\n}\nexport function SetTreeNode$1__get_Right(_) {\n return _.right;\n}\nexport function SetTreeNode$1__get_Height(_) {\n return _.h;\n}\nexport function SetTreeModule_empty() {\n return undefined;\n}\nexport function SetTreeModule_countAux(t_mut, acc_mut) {\n SetTreeModule_countAux: while (true) {\n const t = t_mut, acc = acc_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = SetTreeModule_countAux(SetTreeNode$1__get_Right(tn), acc + 1);\n continue SetTreeModule_countAux;\n }\n else {\n return (acc + 1) | 0;\n }\n }\n else {\n return acc | 0;\n }\n break;\n }\n}\nexport function SetTreeModule_count(s) {\n return SetTreeModule_countAux(s, 0);\n}\nexport function SetTreeModule_mk(l, k, r) {\n let tn, tn_1;\n let hl;\n const t = l;\n if (t != null) {\n const t2 = value_3(t);\n hl = ((t2 instanceof SetTreeNode$1) ? ((tn = t2, SetTreeNode$1__get_Height(tn))) : 1);\n }\n else {\n hl = 0;\n }\n let hr;\n const t_1 = r;\n if (t_1 != null) {\n const t2_1 = value_3(t_1);\n hr = ((t2_1 instanceof SetTreeNode$1) ? ((tn_1 = t2_1, SetTreeNode$1__get_Height(tn_1))) : 1);\n }\n else {\n hr = 0;\n }\n const m = ((hl < hr) ? hr : hl) | 0;\n if (m === 0) {\n return SetTreeLeaf$1_$ctor_2B595(k);\n }\n else {\n return SetTreeNode$1_$ctor_5F465FC9(k, l, r, m + 1);\n }\n}\nexport function SetTreeModule_rebalance(t1, v, t2) {\n let tn, tn_1, t_2, t2_3, tn_2, t_3, t2_4, tn_3;\n let t1h;\n const t = t1;\n if (t != null) {\n const t2_1 = value_3(t);\n t1h = ((t2_1 instanceof SetTreeNode$1) ? ((tn = t2_1, SetTreeNode$1__get_Height(tn))) : 1);\n }\n else {\n t1h = 0;\n }\n let t2h;\n const t_1 = t2;\n if (t_1 != null) {\n const t2_2 = value_3(t_1);\n t2h = ((t2_2 instanceof SetTreeNode$1) ? ((tn_1 = t2_2, SetTreeNode$1__get_Height(tn_1))) : 1);\n }\n else {\n t2h = 0;\n }\n if (t2h > (t1h + 2)) {\n const matchValue = value_3(t2);\n if (matchValue instanceof SetTreeNode$1) {\n const t2$0027 = matchValue;\n if (((t_2 = SetTreeNode$1__get_Left(t2$0027), (t_2 != null) ? ((t2_3 = value_3(t_2), (t2_3 instanceof SetTreeNode$1) ? ((tn_2 = t2_3, SetTreeNode$1__get_Height(tn_2))) : 1)) : 0)) > (t1h + 1)) {\n const matchValue_1 = value_3(SetTreeNode$1__get_Left(t2$0027));\n if (matchValue_1 instanceof SetTreeNode$1) {\n const t2l = matchValue_1;\n return SetTreeModule_mk(SetTreeModule_mk(t1, v, SetTreeNode$1__get_Left(t2l)), SetTreeLeaf$1__get_Key(t2l), SetTreeModule_mk(SetTreeNode$1__get_Right(t2l), SetTreeLeaf$1__get_Key(t2$0027), SetTreeNode$1__get_Right(t2$0027)));\n }\n else {\n throw new Error(\"internal error: Set.rebalance\");\n }\n }\n else {\n return SetTreeModule_mk(SetTreeModule_mk(t1, v, SetTreeNode$1__get_Left(t2$0027)), SetTreeLeaf$1__get_Key(t2$0027), SetTreeNode$1__get_Right(t2$0027));\n }\n }\n else {\n throw new Error(\"internal error: Set.rebalance\");\n }\n }\n else if (t1h > (t2h + 2)) {\n const matchValue_2 = value_3(t1);\n if (matchValue_2 instanceof SetTreeNode$1) {\n const t1$0027 = matchValue_2;\n if (((t_3 = SetTreeNode$1__get_Right(t1$0027), (t_3 != null) ? ((t2_4 = value_3(t_3), (t2_4 instanceof SetTreeNode$1) ? ((tn_3 = t2_4, SetTreeNode$1__get_Height(tn_3))) : 1)) : 0)) > (t2h + 1)) {\n const matchValue_3 = value_3(SetTreeNode$1__get_Right(t1$0027));\n if (matchValue_3 instanceof SetTreeNode$1) {\n const t1r = matchValue_3;\n return SetTreeModule_mk(SetTreeModule_mk(SetTreeNode$1__get_Left(t1$0027), SetTreeLeaf$1__get_Key(t1$0027), SetTreeNode$1__get_Left(t1r)), SetTreeLeaf$1__get_Key(t1r), SetTreeModule_mk(SetTreeNode$1__get_Right(t1r), v, t2));\n }\n else {\n throw new Error(\"internal error: Set.rebalance\");\n }\n }\n else {\n return SetTreeModule_mk(SetTreeNode$1__get_Left(t1$0027), SetTreeLeaf$1__get_Key(t1$0027), SetTreeModule_mk(SetTreeNode$1__get_Right(t1$0027), v, t2));\n }\n }\n else {\n throw new Error(\"internal error: Set.rebalance\");\n }\n }\n else {\n return SetTreeModule_mk(t1, v, t2);\n }\n}\nexport function SetTreeModule_add(comparer, k, t) {\n if (t != null) {\n const t2 = value_3(t);\n const c = comparer.Compare(k, SetTreeLeaf$1__get_Key(t2)) | 0;\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (c < 0) {\n return SetTreeModule_rebalance(SetTreeModule_add(comparer, k, SetTreeNode$1__get_Left(tn)), SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn));\n }\n else if (c === 0) {\n return t;\n }\n else {\n return SetTreeModule_rebalance(SetTreeNode$1__get_Left(tn), SetTreeLeaf$1__get_Key(tn), SetTreeModule_add(comparer, k, SetTreeNode$1__get_Right(tn)));\n }\n }\n else {\n const c_1 = comparer.Compare(k, SetTreeLeaf$1__get_Key(t2)) | 0;\n if (c_1 < 0) {\n return SetTreeNode$1_$ctor_5F465FC9(k, SetTreeModule_empty(), t, 2);\n }\n else if (c_1 === 0) {\n return t;\n }\n else {\n return SetTreeNode$1_$ctor_5F465FC9(k, t, SetTreeModule_empty(), 2);\n }\n }\n }\n else {\n return SetTreeLeaf$1_$ctor_2B595(k);\n }\n}\nexport function SetTreeModule_balance(comparer, t1, k, t2) {\n if (t1 != null) {\n const t1$0027 = value_3(t1);\n if (t2 != null) {\n const t2$0027 = value_3(t2);\n if (t1$0027 instanceof SetTreeNode$1) {\n const t1n = t1$0027;\n if (t2$0027 instanceof SetTreeNode$1) {\n const t2n = t2$0027;\n if ((SetTreeNode$1__get_Height(t1n) + 2) < SetTreeNode$1__get_Height(t2n)) {\n return SetTreeModule_rebalance(SetTreeModule_balance(comparer, t1, k, SetTreeNode$1__get_Left(t2n)), SetTreeLeaf$1__get_Key(t2n), SetTreeNode$1__get_Right(t2n));\n }\n else if ((SetTreeNode$1__get_Height(t2n) + 2) < SetTreeNode$1__get_Height(t1n)) {\n return SetTreeModule_rebalance(SetTreeNode$1__get_Left(t1n), SetTreeLeaf$1__get_Key(t1n), SetTreeModule_balance(comparer, SetTreeNode$1__get_Right(t1n), k, t2));\n }\n else {\n return SetTreeModule_mk(t1, k, t2);\n }\n }\n else {\n return SetTreeModule_add(comparer, k, SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t2$0027), t1));\n }\n }\n else {\n return SetTreeModule_add(comparer, k, SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t1$0027), t2));\n }\n }\n else {\n return SetTreeModule_add(comparer, k, t1);\n }\n }\n else {\n return SetTreeModule_add(comparer, k, t2);\n }\n}\nexport function SetTreeModule_split(comparer, pivot, t) {\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n const c = comparer.Compare(pivot, SetTreeLeaf$1__get_Key(tn)) | 0;\n if (c < 0) {\n const patternInput = SetTreeModule_split(comparer, pivot, SetTreeNode$1__get_Left(tn));\n return [patternInput[0], patternInput[1], SetTreeModule_balance(comparer, patternInput[2], SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn))];\n }\n else if (c === 0) {\n return [SetTreeNode$1__get_Left(tn), true, SetTreeNode$1__get_Right(tn)];\n }\n else {\n const patternInput_1 = SetTreeModule_split(comparer, pivot, SetTreeNode$1__get_Right(tn));\n return [SetTreeModule_balance(comparer, SetTreeNode$1__get_Left(tn), SetTreeLeaf$1__get_Key(tn), patternInput_1[0]), patternInput_1[1], patternInput_1[2]];\n }\n }\n else {\n const c_1 = comparer.Compare(SetTreeLeaf$1__get_Key(t2), pivot) | 0;\n if (c_1 < 0) {\n return [t, false, SetTreeModule_empty()];\n }\n else if (c_1 === 0) {\n return [SetTreeModule_empty(), true, SetTreeModule_empty()];\n }\n else {\n return [SetTreeModule_empty(), false, t];\n }\n }\n }\n else {\n return [SetTreeModule_empty(), false, SetTreeModule_empty()];\n }\n}\nexport function SetTreeModule_spliceOutSuccessor(t) {\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (SetTreeNode$1__get_Left(tn) == null) {\n return [SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn)];\n }\n else {\n const patternInput = SetTreeModule_spliceOutSuccessor(SetTreeNode$1__get_Left(tn));\n return [patternInput[0], SetTreeModule_mk(patternInput[1], SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn))];\n }\n }\n else {\n return [SetTreeLeaf$1__get_Key(t2), SetTreeModule_empty()];\n }\n }\n else {\n throw new Error(\"internal error: Set.spliceOutSuccessor\");\n }\n}\nexport function SetTreeModule_remove(comparer, k, t) {\n if (t != null) {\n const t2 = value_3(t);\n const c = comparer.Compare(k, SetTreeLeaf$1__get_Key(t2)) | 0;\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (c < 0) {\n return SetTreeModule_rebalance(SetTreeModule_remove(comparer, k, SetTreeNode$1__get_Left(tn)), SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn));\n }\n else if (c === 0) {\n if (SetTreeNode$1__get_Left(tn) == null) {\n return SetTreeNode$1__get_Right(tn);\n }\n else if (SetTreeNode$1__get_Right(tn) == null) {\n return SetTreeNode$1__get_Left(tn);\n }\n else {\n const patternInput = SetTreeModule_spliceOutSuccessor(SetTreeNode$1__get_Right(tn));\n return SetTreeModule_mk(SetTreeNode$1__get_Left(tn), patternInput[0], patternInput[1]);\n }\n }\n else {\n return SetTreeModule_rebalance(SetTreeNode$1__get_Left(tn), SetTreeLeaf$1__get_Key(tn), SetTreeModule_remove(comparer, k, SetTreeNode$1__get_Right(tn)));\n }\n }\n else if (c === 0) {\n return SetTreeModule_empty();\n }\n else {\n return t;\n }\n }\n else {\n return t;\n }\n}\nexport function SetTreeModule_mem(comparer_mut, k_mut, t_mut) {\n SetTreeModule_mem: while (true) {\n const comparer = comparer_mut, k = k_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n const c = comparer.Compare(k, SetTreeLeaf$1__get_Key(t2)) | 0;\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (c < 0) {\n comparer_mut = comparer;\n k_mut = k;\n t_mut = SetTreeNode$1__get_Left(tn);\n continue SetTreeModule_mem;\n }\n else if (c === 0) {\n return true;\n }\n else {\n comparer_mut = comparer;\n k_mut = k;\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_mem;\n }\n }\n else {\n return c === 0;\n }\n }\n else {\n return false;\n }\n break;\n }\n}\nexport function SetTreeModule_iter(f_mut, t_mut) {\n SetTreeModule_iter: while (true) {\n const f = f_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n SetTreeModule_iter(f, SetTreeNode$1__get_Left(tn));\n f(SetTreeLeaf$1__get_Key(tn));\n f_mut = f;\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_iter;\n }\n else {\n f(SetTreeLeaf$1__get_Key(t2));\n }\n }\n break;\n }\n}\nexport function SetTreeModule_foldBackOpt(f_mut, t_mut, x_mut) {\n SetTreeModule_foldBackOpt: while (true) {\n const f = f_mut, t = t_mut, x = x_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n f_mut = f;\n t_mut = SetTreeNode$1__get_Left(tn);\n x_mut = f(SetTreeLeaf$1__get_Key(tn), SetTreeModule_foldBackOpt(f, SetTreeNode$1__get_Right(tn), x));\n continue SetTreeModule_foldBackOpt;\n }\n else {\n return f(SetTreeLeaf$1__get_Key(t2), x);\n }\n }\n else {\n return x;\n }\n break;\n }\n}\nexport function SetTreeModule_foldBack(f, m, x) {\n return SetTreeModule_foldBackOpt(f, m, x);\n}\nexport function SetTreeModule_foldOpt(f_mut, x_mut, t_mut) {\n SetTreeModule_foldOpt: while (true) {\n const f = f_mut, x = x_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n f_mut = f;\n x_mut = f(SetTreeModule_foldOpt(f, x, SetTreeNode$1__get_Left(tn)), SetTreeLeaf$1__get_Key(tn));\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_foldOpt;\n }\n else {\n return f(x, SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return x;\n }\n break;\n }\n}\nexport function SetTreeModule_fold(f, x, m) {\n return SetTreeModule_foldOpt(f, x, m);\n}\nexport function SetTreeModule_forall(f_mut, t_mut) {\n SetTreeModule_forall: while (true) {\n const f = f_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (f(SetTreeLeaf$1__get_Key(tn)) && SetTreeModule_forall(f, SetTreeNode$1__get_Left(tn))) {\n f_mut = f;\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_forall;\n }\n else {\n return false;\n }\n }\n else {\n return f(SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return true;\n }\n break;\n }\n}\nexport function SetTreeModule_exists(f_mut, t_mut) {\n SetTreeModule_exists: while (true) {\n const f = f_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (f(SetTreeLeaf$1__get_Key(tn)) ? true : SetTreeModule_exists(f, SetTreeNode$1__get_Left(tn))) {\n return true;\n }\n else {\n f_mut = f;\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_exists;\n }\n }\n else {\n return f(SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return false;\n }\n break;\n }\n}\nexport function SetTreeModule_subset(comparer, a, b) {\n return SetTreeModule_forall((x) => SetTreeModule_mem(comparer, x, b), a);\n}\nexport function SetTreeModule_properSubset(comparer, a, b) {\n if (SetTreeModule_forall((x) => SetTreeModule_mem(comparer, x, b), a)) {\n return SetTreeModule_exists((x_1) => !SetTreeModule_mem(comparer, x_1, a), b);\n }\n else {\n return false;\n }\n}\nexport function SetTreeModule_filterAux(comparer_mut, f_mut, t_mut, acc_mut) {\n SetTreeModule_filterAux: while (true) {\n const comparer = comparer_mut, f = f_mut, t = t_mut, acc = acc_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n const acc_1 = f(SetTreeLeaf$1__get_Key(tn)) ? SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(tn), acc) : acc;\n comparer_mut = comparer;\n f_mut = f;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = SetTreeModule_filterAux(comparer, f, SetTreeNode$1__get_Right(tn), acc_1);\n continue SetTreeModule_filterAux;\n }\n else if (f(SetTreeLeaf$1__get_Key(t2))) {\n return SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t2), acc);\n }\n else {\n return acc;\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_filter(comparer, f, s) {\n return SetTreeModule_filterAux(comparer, f, s, SetTreeModule_empty());\n}\nexport function SetTreeModule_diffAux(comparer_mut, t_mut, acc_mut) {\n SetTreeModule_diffAux: while (true) {\n const comparer = comparer_mut, t = t_mut, acc = acc_mut;\n if (acc == null) {\n return acc;\n }\n else if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n comparer_mut = comparer;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = SetTreeModule_diffAux(comparer, SetTreeNode$1__get_Right(tn), SetTreeModule_remove(comparer, SetTreeLeaf$1__get_Key(tn), acc));\n continue SetTreeModule_diffAux;\n }\n else {\n return SetTreeModule_remove(comparer, SetTreeLeaf$1__get_Key(t2), acc);\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_diff(comparer, a, b) {\n return SetTreeModule_diffAux(comparer, b, a);\n}\nexport function SetTreeModule_union(comparer, t1, t2) {\n if (t1 != null) {\n const t1$0027 = value_3(t1);\n if (t2 != null) {\n const t2$0027 = value_3(t2);\n if (t1$0027 instanceof SetTreeNode$1) {\n const t1n = t1$0027;\n if (t2$0027 instanceof SetTreeNode$1) {\n const t2n = t2$0027;\n if (SetTreeNode$1__get_Height(t1n) > SetTreeNode$1__get_Height(t2n)) {\n const patternInput = SetTreeModule_split(comparer, SetTreeLeaf$1__get_Key(t1n), t2);\n return SetTreeModule_balance(comparer, SetTreeModule_union(comparer, SetTreeNode$1__get_Left(t1n), patternInput[0]), SetTreeLeaf$1__get_Key(t1n), SetTreeModule_union(comparer, SetTreeNode$1__get_Right(t1n), patternInput[2]));\n }\n else {\n const patternInput_1 = SetTreeModule_split(comparer, SetTreeLeaf$1__get_Key(t2n), t1);\n return SetTreeModule_balance(comparer, SetTreeModule_union(comparer, SetTreeNode$1__get_Left(t2n), patternInput_1[0]), SetTreeLeaf$1__get_Key(t2n), SetTreeModule_union(comparer, SetTreeNode$1__get_Right(t2n), patternInput_1[2]));\n }\n }\n else {\n return SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t2$0027), t1);\n }\n }\n else {\n return SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t1$0027), t2);\n }\n }\n else {\n return t1;\n }\n }\n else {\n return t2;\n }\n}\nexport function SetTreeModule_intersectionAux(comparer_mut, b_mut, t_mut, acc_mut) {\n SetTreeModule_intersectionAux: while (true) {\n const comparer = comparer_mut, b = b_mut, t = t_mut, acc = acc_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n const acc_1 = SetTreeModule_intersectionAux(comparer, b, SetTreeNode$1__get_Right(tn), acc);\n const acc_2 = SetTreeModule_mem(comparer, SetTreeLeaf$1__get_Key(tn), b) ? SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(tn), acc_1) : acc_1;\n comparer_mut = comparer;\n b_mut = b;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = acc_2;\n continue SetTreeModule_intersectionAux;\n }\n else if (SetTreeModule_mem(comparer, SetTreeLeaf$1__get_Key(t2), b)) {\n return SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t2), acc);\n }\n else {\n return acc;\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_intersection(comparer, a, b) {\n return SetTreeModule_intersectionAux(comparer, b, a, SetTreeModule_empty());\n}\nexport function SetTreeModule_partition1(comparer, f, k, acc1, acc2) {\n if (f(k)) {\n return [SetTreeModule_add(comparer, k, acc1), acc2];\n }\n else {\n return [acc1, SetTreeModule_add(comparer, k, acc2)];\n }\n}\nexport function SetTreeModule_partitionAux(comparer_mut, f_mut, t_mut, acc__mut, acc__1_mut) {\n SetTreeModule_partitionAux: while (true) {\n const comparer = comparer_mut, f = f_mut, t = t_mut, acc_ = acc__mut, acc__1 = acc__1_mut;\n const acc = [acc_, acc__1];\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n const acc_1 = SetTreeModule_partitionAux(comparer, f, SetTreeNode$1__get_Right(tn), acc[0], acc[1]);\n const acc_4 = SetTreeModule_partition1(comparer, f, SetTreeLeaf$1__get_Key(tn), acc_1[0], acc_1[1]);\n comparer_mut = comparer;\n f_mut = f;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc__mut = acc_4[0];\n acc__1_mut = acc_4[1];\n continue SetTreeModule_partitionAux;\n }\n else {\n return SetTreeModule_partition1(comparer, f, SetTreeLeaf$1__get_Key(t2), acc[0], acc[1]);\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_partition(comparer, f, s) {\n return SetTreeModule_partitionAux(comparer, f, s, SetTreeModule_empty(), SetTreeModule_empty());\n}\nexport function SetTreeModule_minimumElementAux(t_mut, n_mut) {\n SetTreeModule_minimumElementAux: while (true) {\n const t = t_mut, n = n_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n t_mut = SetTreeNode$1__get_Left(tn);\n n_mut = SetTreeLeaf$1__get_Key(tn);\n continue SetTreeModule_minimumElementAux;\n }\n else {\n return SetTreeLeaf$1__get_Key(t2);\n }\n }\n else {\n return n;\n }\n break;\n }\n}\nexport function SetTreeModule_minimumElementOpt(t) {\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n return some(SetTreeModule_minimumElementAux(SetTreeNode$1__get_Left(tn), SetTreeLeaf$1__get_Key(tn)));\n }\n else {\n return some(SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return undefined;\n }\n}\nexport function SetTreeModule_maximumElementAux(t_mut, n_mut) {\n SetTreeModule_maximumElementAux: while (true) {\n const t = t_mut, n = n_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n t_mut = SetTreeNode$1__get_Right(tn);\n n_mut = SetTreeLeaf$1__get_Key(tn);\n continue SetTreeModule_maximumElementAux;\n }\n else {\n return SetTreeLeaf$1__get_Key(t2);\n }\n }\n else {\n return n;\n }\n break;\n }\n}\nexport function SetTreeModule_maximumElementOpt(t) {\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n return some(SetTreeModule_maximumElementAux(SetTreeNode$1__get_Right(tn), SetTreeLeaf$1__get_Key(tn)));\n }\n else {\n return some(SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return undefined;\n }\n}\nexport function SetTreeModule_minimumElement(s) {\n const matchValue = SetTreeModule_minimumElementOpt(s);\n if (matchValue == null) {\n throw new Error(\"Set contains no elements\");\n }\n else {\n return value_3(matchValue);\n }\n}\nexport function SetTreeModule_maximumElement(s) {\n const matchValue = SetTreeModule_maximumElementOpt(s);\n if (matchValue == null) {\n throw new Error(\"Set contains no elements\");\n }\n else {\n return value_3(matchValue);\n }\n}\nexport class SetTreeModule_SetIterator$1 extends Record {\n constructor(stack, started) {\n super();\n this.stack = stack;\n this.started = started;\n }\n}\nexport function SetTreeModule_SetIterator$1_$reflection(gen0) {\n return record_type(\"Set.SetTreeModule.SetIterator`1\", [gen0], SetTreeModule_SetIterator$1, () => [[\"stack\", list_type(option_type(SetTreeLeaf$1_$reflection(gen0)))], [\"started\", bool_type]]);\n}\nexport function SetTreeModule_collapseLHS(stack_mut) {\n SetTreeModule_collapseLHS: while (true) {\n const stack = stack_mut;\n if (!isEmpty_1(stack)) {\n const x = head(stack);\n const rest = tail(stack);\n if (x != null) {\n const x2 = value_3(x);\n if (x2 instanceof SetTreeNode$1) {\n const xn = x2;\n stack_mut = ofArrayWithTail([SetTreeNode$1__get_Left(xn), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(xn)), SetTreeNode$1__get_Right(xn)], rest);\n continue SetTreeModule_collapseLHS;\n }\n else {\n return stack;\n }\n }\n else {\n stack_mut = rest;\n continue SetTreeModule_collapseLHS;\n }\n }\n else {\n return empty_1();\n }\n break;\n }\n}\nexport function SetTreeModule_mkIterator(s) {\n return new SetTreeModule_SetIterator$1(SetTreeModule_collapseLHS(singleton_1(s)), false);\n}\nexport function SetTreeModule_notStarted() {\n throw new Error(\"Enumeration not started\");\n}\nexport function SetTreeModule_alreadyFinished() {\n throw new Error(\"Enumeration already started\");\n}\nexport function SetTreeModule_current(i) {\n if (i.started) {\n const matchValue = i.stack;\n if (isEmpty_1(matchValue)) {\n return SetTreeModule_alreadyFinished();\n }\n else if (head(matchValue) != null) {\n const t = value_3(head(matchValue));\n return SetTreeLeaf$1__get_Key(t);\n }\n else {\n throw new Error(\"Please report error: Set iterator, unexpected stack for current\");\n }\n }\n else {\n return SetTreeModule_notStarted();\n }\n}\nexport function SetTreeModule_moveNext(i) {\n if (i.started) {\n const matchValue = i.stack;\n if (!isEmpty_1(matchValue)) {\n if (head(matchValue) != null) {\n const t = value_3(head(matchValue));\n if (t instanceof SetTreeNode$1) {\n throw new Error(\"Please report error: Set iterator, unexpected stack for moveNext\");\n }\n else {\n i.stack = SetTreeModule_collapseLHS(tail(matchValue));\n return !isEmpty_1(i.stack);\n }\n }\n else {\n throw new Error(\"Please report error: Set iterator, unexpected stack for moveNext\");\n }\n }\n else {\n return false;\n }\n }\n else {\n i.started = true;\n return !isEmpty_1(i.stack);\n }\n}\nexport function SetTreeModule_mkIEnumerator(s) {\n let i = SetTreeModule_mkIterator(s);\n return {\n \"System.Collections.Generic.IEnumerator`1.get_Current\"() {\n return SetTreeModule_current(i);\n },\n \"System.Collections.IEnumerator.get_Current\"() {\n return SetTreeModule_current(i);\n },\n \"System.Collections.IEnumerator.MoveNext\"() {\n return SetTreeModule_moveNext(i);\n },\n \"System.Collections.IEnumerator.Reset\"() {\n i = SetTreeModule_mkIterator(s);\n },\n Dispose() {\n },\n };\n}\n/**\n * Set comparison. Note this can be expensive.\n */\nexport function SetTreeModule_compareStacks(comparer_mut, l1_mut, l2_mut) {\n SetTreeModule_compareStacks: while (true) {\n const comparer = comparer_mut, l1 = l1_mut, l2 = l2_mut;\n if (!isEmpty_1(l1)) {\n if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n if (head(l1) != null) {\n const x1_3 = value_3(head(l1));\n const x2_3 = value_3(head(l2));\n if (x1_3 instanceof SetTreeNode$1) {\n const x1n_2 = x1_3;\n if (SetTreeNode$1__get_Left(x1n_2) == null) {\n if (x2_3 instanceof SetTreeNode$1) {\n const x2n_2 = x2_3;\n if (SetTreeNode$1__get_Left(x2n_2) == null) {\n const c = comparer.Compare(SetTreeLeaf$1__get_Key(x1n_2), SetTreeLeaf$1__get_Key(x2n_2)) | 0;\n if (c !== 0) {\n return c | 0;\n }\n else {\n comparer_mut = comparer;\n l1_mut = cons(SetTreeNode$1__get_Right(x1n_2), tail(l1));\n l2_mut = cons(SetTreeNode$1__get_Right(x2n_2), tail(l2));\n continue SetTreeModule_compareStacks;\n }\n }\n else {\n let matchResult, t1_6, x1_4, t2_6, x2_4;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult = 0;\n t1_6 = tail(l1);\n x1_4 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult = 1;\n t2_6 = tail(l2);\n x2_4 = value_3(head(l2));\n }\n else {\n matchResult = 2;\n }\n }\n else {\n matchResult = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult = 1;\n t2_6 = tail(l2);\n x2_4 = value_3(head(l2));\n }\n else {\n matchResult = 2;\n }\n }\n else {\n matchResult = 2;\n }\n switch (matchResult) {\n case 0:\n if (x1_4 instanceof SetTreeNode$1) {\n const x1n_3 = x1_4;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n_3), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n_3), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n_3), 0)], t1_6);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1_4))], t1_6);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_4 instanceof SetTreeNode$1) {\n const x2n_3 = x2_4;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n_3), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n_3), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n_3), 0)], t2_6);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_4))], t2_6);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n }\n else {\n const c_1 = comparer.Compare(SetTreeLeaf$1__get_Key(x1n_2), SetTreeLeaf$1__get_Key(x2_3)) | 0;\n if (c_1 !== 0) {\n return c_1 | 0;\n }\n else {\n comparer_mut = comparer;\n l1_mut = cons(SetTreeNode$1__get_Right(x1n_2), tail(l1));\n l2_mut = cons(SetTreeModule_empty(), tail(l2));\n continue SetTreeModule_compareStacks;\n }\n }\n }\n else {\n let matchResult_1, t1_7, x1_5, t2_7, x2_5;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult_1 = 0;\n t1_7 = tail(l1);\n x1_5 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_1 = 1;\n t2_7 = tail(l2);\n x2_5 = value_3(head(l2));\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_1 = 1;\n t2_7 = tail(l2);\n x2_5 = value_3(head(l2));\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n switch (matchResult_1) {\n case 0:\n if (x1_5 instanceof SetTreeNode$1) {\n const x1n_4 = x1_5;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n_4), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n_4), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n_4), 0)], t1_7);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1_5))], t1_7);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_5 instanceof SetTreeNode$1) {\n const x2n_4 = x2_5;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n_4), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n_4), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n_4), 0)], t2_7);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_5))], t2_7);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n }\n else if (x2_3 instanceof SetTreeNode$1) {\n const x2n_5 = x2_3;\n if (SetTreeNode$1__get_Left(x2n_5) == null) {\n const c_2 = comparer.Compare(SetTreeLeaf$1__get_Key(x1_3), SetTreeLeaf$1__get_Key(x2n_5)) | 0;\n if (c_2 !== 0) {\n return c_2 | 0;\n }\n else {\n comparer_mut = comparer;\n l1_mut = cons(SetTreeModule_empty(), tail(l1));\n l2_mut = cons(SetTreeNode$1__get_Right(x2n_5), tail(l2));\n continue SetTreeModule_compareStacks;\n }\n }\n else {\n let matchResult_2, t1_8, x1_6, t2_8, x2_6;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult_2 = 0;\n t1_8 = tail(l1);\n x1_6 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_2 = 1;\n t2_8 = tail(l2);\n x2_6 = value_3(head(l2));\n }\n else {\n matchResult_2 = 2;\n }\n }\n else {\n matchResult_2 = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_2 = 1;\n t2_8 = tail(l2);\n x2_6 = value_3(head(l2));\n }\n else {\n matchResult_2 = 2;\n }\n }\n else {\n matchResult_2 = 2;\n }\n switch (matchResult_2) {\n case 0:\n if (x1_6 instanceof SetTreeNode$1) {\n const x1n_5 = x1_6;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n_5), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n_5), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n_5), 0)], t1_8);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1_6))], t1_8);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_6 instanceof SetTreeNode$1) {\n const x2n_6 = x2_6;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n_6), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n_6), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n_6), 0)], t2_8);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_6))], t2_8);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n }\n else {\n const c_3 = comparer.Compare(SetTreeLeaf$1__get_Key(x1_3), SetTreeLeaf$1__get_Key(x2_3)) | 0;\n if (c_3 !== 0) {\n return c_3 | 0;\n }\n else {\n comparer_mut = comparer;\n l1_mut = tail(l1);\n l2_mut = tail(l2);\n continue SetTreeModule_compareStacks;\n }\n }\n }\n else {\n const x2 = value_3(head(l2));\n let matchResult_3, t1_2, x1, t2_2, x2_1;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult_3 = 0;\n t1_2 = tail(l1);\n x1 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_3 = 1;\n t2_2 = tail(l2);\n x2_1 = value_3(head(l2));\n }\n else {\n matchResult_3 = 2;\n }\n }\n else {\n matchResult_3 = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_3 = 1;\n t2_2 = tail(l2);\n x2_1 = value_3(head(l2));\n }\n else {\n matchResult_3 = 2;\n }\n }\n else {\n matchResult_3 = 2;\n }\n switch (matchResult_3) {\n case 0:\n if (x1 instanceof SetTreeNode$1) {\n const x1n = x1;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n), 0)], t1_2);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1))], t1_2);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_1 instanceof SetTreeNode$1) {\n const x2n = x2_1;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n), 0)], t2_2);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_1))], t2_2);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n }\n else if (head(l1) != null) {\n const x1_1 = value_3(head(l1));\n let matchResult_4, t1_4, x1_2, t2_4, x2_2;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult_4 = 0;\n t1_4 = tail(l1);\n x1_2 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_4 = 1;\n t2_4 = tail(l2);\n x2_2 = value_3(head(l2));\n }\n else {\n matchResult_4 = 2;\n }\n }\n else {\n matchResult_4 = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_4 = 1;\n t2_4 = tail(l2);\n x2_2 = value_3(head(l2));\n }\n else {\n matchResult_4 = 2;\n }\n }\n else {\n matchResult_4 = 2;\n }\n switch (matchResult_4) {\n case 0:\n if (x1_2 instanceof SetTreeNode$1) {\n const x1n_1 = x1_2;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n_1), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n_1), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n_1), 0)], t1_4);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1_2))], t1_4);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_2 instanceof SetTreeNode$1) {\n const x2n_1 = x2_2;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n_1), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n_1), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n_1), 0)], t2_4);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_2))], t2_4);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n else {\n comparer_mut = comparer;\n l1_mut = tail(l1);\n l2_mut = tail(l2);\n continue SetTreeModule_compareStacks;\n }\n }\n else {\n return 1;\n }\n }\n else if (isEmpty_1(l2)) {\n return 0;\n }\n else {\n return -1;\n }\n break;\n }\n}\nexport function SetTreeModule_compare(comparer, t1, t2) {\n if (t1 == null) {\n if (t2 == null) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (t2 == null) {\n return 1;\n }\n else {\n return SetTreeModule_compareStacks(comparer, singleton_1(t1), singleton_1(t2)) | 0;\n }\n}\nexport function SetTreeModule_choose(s) {\n return SetTreeModule_minimumElement(s);\n}\nexport function SetTreeModule_toList(t) {\n const loop = (t$0027_mut, acc_mut) => {\n loop: while (true) {\n const t$0027 = t$0027_mut, acc = acc_mut;\n if (t$0027 != null) {\n const t2 = value_3(t$0027);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n t$0027_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = cons(SetTreeLeaf$1__get_Key(tn), loop(SetTreeNode$1__get_Right(tn), acc));\n continue loop;\n }\n else {\n return cons(SetTreeLeaf$1__get_Key(t2), acc);\n }\n }\n else {\n return acc;\n }\n break;\n }\n };\n return loop(t, empty_1());\n}\nexport function SetTreeModule_copyToArray(s, arr, i) {\n let j = i;\n SetTreeModule_iter((x) => {\n setItem(arr, j, x);\n j = ((j + 1) | 0);\n }, s);\n}\nexport function SetTreeModule_toArray(s) {\n const n = SetTreeModule_count(s) | 0;\n const res = fill(new Array(n), 0, n, null);\n SetTreeModule_copyToArray(s, res, 0);\n return res;\n}\nexport function SetTreeModule_mkFromEnumerator(comparer_mut, acc_mut, e_mut) {\n SetTreeModule_mkFromEnumerator: while (true) {\n const comparer = comparer_mut, acc = acc_mut, e = e_mut;\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n comparer_mut = comparer;\n acc_mut = SetTreeModule_add(comparer, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), acc);\n e_mut = e;\n continue SetTreeModule_mkFromEnumerator;\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_ofArray(comparer, l) {\n return fold_1((acc, k) => SetTreeModule_add(comparer, k, acc), SetTreeModule_empty(), l);\n}\nexport function SetTreeModule_ofList(comparer, l) {\n return fold_2((acc, k) => SetTreeModule_add(comparer, k, acc), SetTreeModule_empty(), l);\n}\nexport function SetTreeModule_ofSeq(comparer, c) {\n if (isArrayLike(c)) {\n return SetTreeModule_ofArray(comparer, c);\n }\n else if (c instanceof FSharpList) {\n return SetTreeModule_ofList(comparer, c);\n }\n else {\n const ie = getEnumerator(c);\n try {\n return SetTreeModule_mkFromEnumerator(comparer, SetTreeModule_empty(), ie);\n }\n finally {\n disposeSafe(ie);\n }\n }\n}\nexport class FSharpSet {\n constructor(comparer, tree) {\n this.comparer = comparer;\n this.tree = tree;\n }\n GetHashCode() {\n const this$ = this;\n return FSharpSet__ComputeHashCode(this$) | 0;\n }\n Equals(that) {\n let that_1;\n const this$ = this;\n return (that instanceof FSharpSet) && ((that_1 = that, SetTreeModule_compare(FSharpSet__get_Comparer(this$), FSharpSet__get_Tree(this$), FSharpSet__get_Tree(that_1)) === 0));\n }\n toString() {\n const this$ = this;\n return (\"set [\" + join(\"; \", map_1((x) => {\n let copyOfStruct = x;\n return toString(copyOfStruct);\n }, this$))) + \"]\";\n }\n get [Symbol.toStringTag]() {\n return \"FSharpSet\";\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n CompareTo(that) {\n const s = this;\n return SetTreeModule_compare(FSharpSet__get_Comparer(s), FSharpSet__get_Tree(s), FSharpSet__get_Tree(that)) | 0;\n }\n \"System.Collections.Generic.ICollection`1.Add2B595\"(x) {\n throw new Error(\"ReadOnlyCollection\");\n }\n \"System.Collections.Generic.ICollection`1.Clear\"() {\n throw new Error(\"ReadOnlyCollection\");\n }\n \"System.Collections.Generic.ICollection`1.Remove2B595\"(x) {\n throw new Error(\"ReadOnlyCollection\");\n }\n \"System.Collections.Generic.ICollection`1.Contains2B595\"(x) {\n const s = this;\n return SetTreeModule_mem(FSharpSet__get_Comparer(s), x, FSharpSet__get_Tree(s));\n }\n \"System.Collections.Generic.ICollection`1.CopyToZ3B4C077E\"(arr, i) {\n const s = this;\n SetTreeModule_copyToArray(FSharpSet__get_Tree(s), arr, i);\n }\n \"System.Collections.Generic.ICollection`1.get_IsReadOnly\"() {\n return true;\n }\n \"System.Collections.Generic.ICollection`1.get_Count\"() {\n const s = this;\n return FSharpSet__get_Count(s) | 0;\n }\n \"System.Collections.Generic.IReadOnlyCollection`1.get_Count\"() {\n const s = this;\n return FSharpSet__get_Count(s) | 0;\n }\n GetEnumerator() {\n const s = this;\n return SetTreeModule_mkIEnumerator(FSharpSet__get_Tree(s));\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const s = this;\n return SetTreeModule_mkIEnumerator(FSharpSet__get_Tree(s));\n }\n get size() {\n const s = this;\n return FSharpSet__get_Count(s) | 0;\n }\n add(k) {\n const s = this;\n throw new Error(\"Set cannot be mutated\");\n return s;\n }\n clear() {\n throw new Error(\"Set cannot be mutated\");\n }\n delete(k) {\n throw new Error(\"Set cannot be mutated\");\n return false;\n }\n has(k) {\n const s = this;\n return FSharpSet__Contains(s, k);\n }\n keys() {\n const s = this;\n return map_1((x) => x, s);\n }\n values() {\n const s = this;\n return map_1((x) => x, s);\n }\n entries() {\n const s = this;\n return map_1((v) => [v, v], s);\n }\n forEach(f, thisArg) {\n const s = this;\n iterate_1((x) => {\n f(x, x, s);\n }, s);\n }\n}\nexport function FSharpSet_$reflection(gen0) {\n return class_type(\"Set.FSharpSet\", [gen0], FSharpSet);\n}\nexport function FSharpSet_$ctor(comparer, tree) {\n return new FSharpSet(comparer, tree);\n}\nexport function FSharpSet__get_Comparer(set$) {\n return set$.comparer;\n}\nexport function FSharpSet__get_Tree(set$) {\n return set$.tree;\n}\nexport function FSharpSet_Empty(comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_empty());\n}\nexport function FSharpSet__Add(s, value) {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(s), SetTreeModule_add(FSharpSet__get_Comparer(s), value, FSharpSet__get_Tree(s)));\n}\nexport function FSharpSet__Remove(s, value) {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(s), SetTreeModule_remove(FSharpSet__get_Comparer(s), value, FSharpSet__get_Tree(s)));\n}\nexport function FSharpSet__get_Count(s) {\n return SetTreeModule_count(FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__Contains(s, value) {\n return SetTreeModule_mem(FSharpSet__get_Comparer(s), value, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__Iterate(s, x) {\n SetTreeModule_iter(x, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__Fold(s, f, z) {\n const f_1 = f;\n return SetTreeModule_fold((x, z_1) => f_1(z_1, x), z, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__get_IsEmpty(s) {\n return FSharpSet__get_Tree(s) == null;\n}\nexport function FSharpSet__Partition(s, f) {\n if (FSharpSet__get_Tree(s) == null) {\n return [s, s];\n }\n else {\n const patternInput = SetTreeModule_partition(FSharpSet__get_Comparer(s), f, FSharpSet__get_Tree(s));\n return [FSharpSet_$ctor(FSharpSet__get_Comparer(s), patternInput[0]), FSharpSet_$ctor(FSharpSet__get_Comparer(s), patternInput[1])];\n }\n}\nexport function FSharpSet__Filter(s, f) {\n if (FSharpSet__get_Tree(s) == null) {\n return s;\n }\n else {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(s), SetTreeModule_filter(FSharpSet__get_Comparer(s), f, FSharpSet__get_Tree(s)));\n }\n}\nexport function FSharpSet__Map(s, f, comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_fold((acc, k) => SetTreeModule_add(comparer, f(k), acc), SetTreeModule_empty(), FSharpSet__get_Tree(s)));\n}\nexport function FSharpSet__Exists(s, f) {\n return SetTreeModule_exists(f, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__ForAll(s, f) {\n return SetTreeModule_forall(f, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet_op_Subtraction(set1, set2) {\n if (FSharpSet__get_Tree(set1) == null) {\n return set1;\n }\n else if (FSharpSet__get_Tree(set2) == null) {\n return set1;\n }\n else {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(set1), SetTreeModule_diff(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set1), FSharpSet__get_Tree(set2)));\n }\n}\nexport function FSharpSet_op_Addition(set1, set2) {\n if (FSharpSet__get_Tree(set2) == null) {\n return set1;\n }\n else if (FSharpSet__get_Tree(set1) == null) {\n return set2;\n }\n else {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(set1), SetTreeModule_union(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set1), FSharpSet__get_Tree(set2)));\n }\n}\nexport function FSharpSet_Intersection(a, b) {\n if (FSharpSet__get_Tree(b) == null) {\n return b;\n }\n else if (FSharpSet__get_Tree(a) == null) {\n return a;\n }\n else {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(a), SetTreeModule_intersection(FSharpSet__get_Comparer(a), FSharpSet__get_Tree(a), FSharpSet__get_Tree(b)));\n }\n}\nexport function FSharpSet_IntersectionMany(sets) {\n return reduce(FSharpSet_Intersection, sets);\n}\nexport function FSharpSet_Equality(a, b) {\n return SetTreeModule_compare(FSharpSet__get_Comparer(a), FSharpSet__get_Tree(a), FSharpSet__get_Tree(b)) === 0;\n}\nexport function FSharpSet_Compare(a, b) {\n return SetTreeModule_compare(FSharpSet__get_Comparer(a), FSharpSet__get_Tree(a), FSharpSet__get_Tree(b));\n}\nexport function FSharpSet__get_Choose(x) {\n return SetTreeModule_choose(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__get_MinimumElement(x) {\n return SetTreeModule_minimumElement(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__get_MaximumElement(x) {\n return SetTreeModule_maximumElement(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__IsSubsetOf(x, otherSet) {\n return SetTreeModule_subset(FSharpSet__get_Comparer(x), FSharpSet__get_Tree(x), FSharpSet__get_Tree(otherSet));\n}\nexport function FSharpSet__IsSupersetOf(x, otherSet) {\n return SetTreeModule_subset(FSharpSet__get_Comparer(x), FSharpSet__get_Tree(otherSet), FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__IsProperSubsetOf(x, otherSet) {\n return SetTreeModule_properSubset(FSharpSet__get_Comparer(x), FSharpSet__get_Tree(x), FSharpSet__get_Tree(otherSet));\n}\nexport function FSharpSet__IsProperSupersetOf(x, otherSet) {\n return SetTreeModule_properSubset(FSharpSet__get_Comparer(x), FSharpSet__get_Tree(otherSet), FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__ToList(x) {\n return SetTreeModule_toList(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__ToArray(x) {\n return SetTreeModule_toArray(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__ComputeHashCode(this$) {\n let res = 0;\n const enumerator = getEnumerator(this$);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const x_1 = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n res = ((((res << 1) + structuralHash(x_1)) + 631) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return Math.abs(res) | 0;\n}\nexport function isEmpty(set$) {\n return FSharpSet__get_IsEmpty(set$);\n}\nexport function contains(element, set$) {\n return FSharpSet__Contains(set$, element);\n}\nexport function add(value, set$) {\n return FSharpSet__Add(set$, value);\n}\nexport function singleton(value, comparer) {\n return FSharpSet__Add(FSharpSet_Empty(comparer), value);\n}\nexport function remove(value, set$) {\n return FSharpSet__Remove(set$, value);\n}\nexport function union(set1, set2) {\n return FSharpSet_op_Addition(set1, set2);\n}\nexport function unionMany(sets, comparer) {\n return fold_3(FSharpSet_op_Addition, FSharpSet_Empty(comparer), sets);\n}\nexport function intersect(set1, set2) {\n return FSharpSet_Intersection(set1, set2);\n}\nexport function intersectMany(sets) {\n return FSharpSet_IntersectionMany(sets);\n}\nexport function iterate(action, set$) {\n FSharpSet__Iterate(set$, action);\n}\nexport function empty(comparer) {\n return FSharpSet_Empty(comparer);\n}\nexport function forAll(predicate, set$) {\n return FSharpSet__ForAll(set$, predicate);\n}\nexport function exists(predicate, set$) {\n return FSharpSet__Exists(set$, predicate);\n}\nexport function filter(predicate, set$) {\n return FSharpSet__Filter(set$, predicate);\n}\nexport function partition(predicate, set$) {\n return FSharpSet__Partition(set$, predicate);\n}\nexport function fold(folder, state, set$) {\n return SetTreeModule_fold(folder, state, FSharpSet__get_Tree(set$));\n}\nexport function foldBack(folder, set$, state) {\n return SetTreeModule_foldBack(folder, FSharpSet__get_Tree(set$), state);\n}\nexport function map(mapping, set$, comparer) {\n return FSharpSet__Map(set$, mapping, comparer);\n}\nexport function count(set$) {\n return FSharpSet__get_Count(set$);\n}\nexport function ofList(elements, comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_ofSeq(comparer, elements));\n}\nexport function ofArray(array, comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_ofArray(comparer, array));\n}\nexport function toList(set$) {\n return FSharpSet__ToList(set$);\n}\nexport function toArray(set$) {\n return FSharpSet__ToArray(set$);\n}\nexport function toSeq(set$) {\n return map_1((x) => x, set$);\n}\nexport function ofSeq(elements, comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_ofSeq(comparer, elements));\n}\nexport function difference(set1, set2) {\n return FSharpSet_op_Subtraction(set1, set2);\n}\nexport function isSubset(set1, set2) {\n return SetTreeModule_subset(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set1), FSharpSet__get_Tree(set2));\n}\nexport function isSuperset(set1, set2) {\n return SetTreeModule_subset(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set2), FSharpSet__get_Tree(set1));\n}\nexport function isProperSubset(set1, set2) {\n return SetTreeModule_properSubset(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set1), FSharpSet__get_Tree(set2));\n}\nexport function isProperSuperset(set1, set2) {\n return SetTreeModule_properSubset(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set2), FSharpSet__get_Tree(set1));\n}\nexport function minElement(set$) {\n return FSharpSet__get_MinimumElement(set$);\n}\nexport function maxElement(set$) {\n return FSharpSet__get_MaximumElement(set$);\n}\nexport function unionWith(s1, s2) {\n return fold_3((acc, x) => acc.add(x), s1, s2);\n}\nexport function newMutableSetWith(s1, s2) {\n if (s1 instanceof HashSet) {\n const s1_1 = s1;\n return HashSet_$ctor_Z6150332D(s2, HashSet__get_Comparer(s1_1));\n }\n else {\n return new Set(s2);\n }\n}\nexport function intersectWith(s1, s2) {\n const s2_1 = newMutableSetWith(s1, s2);\n iterate_1((x) => {\n if (!s2_1.has(x)) {\n s1.delete(x);\n }\n }, s1.values());\n}\nexport function exceptWith(s1, s2) {\n iterate_1((x) => {\n s1.delete(x);\n }, s2);\n}\nexport function isSubsetOf(s1, s2) {\n const s2_1 = newMutableSetWith(s1, s2);\n return forAll_1((value) => s2_1.has(value), s1.values());\n}\nexport function isSupersetOf(s1, s2) {\n return forAll_1((value) => s1.has(value), s2);\n}\nexport function isProperSubsetOf(s1, s2) {\n const s2_1 = newMutableSetWith(s1, s2);\n if (s2_1.size > s1.size) {\n return forAll_1((value) => s2_1.has(value), s1.values());\n }\n else {\n return false;\n }\n}\nexport function isProperSupersetOf(s1, s2) {\n const s2_1 = cache(s2);\n if (exists_1((arg) => !s1.has(arg), s2_1)) {\n return forAll_1((value_2) => s1.has(value_2), s2_1);\n }\n else {\n return false;\n }\n}\n","import { filter, partition, foldBack, choose, append, iterate, cons, map, concat, empty } from \"../fable-library-js.4.19.3/List.js\";\nimport { join } from \"../fable-library-js.4.19.3/String.js\";\nimport { compare, disposeSafe } from \"../fable-library-js.4.19.3/Util.js\";\nimport { ofList, add, contains, empty as empty_1 } from \"../fable-library-js.4.19.3/Set.js\";\n\n/**\n * None - no subscriptions, also known as `[]`\n */\nexport function Sub_none() {\n return empty();\n}\n\n/**\n * Aggregate multiple subscriptions\n */\nexport function Sub_batch(subs) {\n return concat(subs);\n}\n\n/**\n * When emitting the message, map to another type.\n * To avoid ID conflicts with other components, scope SubIds with a prefix.\n */\nexport function Sub_map(idPrefix, f, sub) {\n return map((tupledArg) => [cons(idPrefix, tupledArg[0]), (dispatch) => tupledArg[1]((arg) => {\n dispatch(f(arg));\n })], sub);\n}\n\nexport function Sub_Internal_SubId_toString(subId) {\n return join(\"/\", subId);\n}\n\nexport function Sub_Internal_Fx_warnDupe(onError, subId) {\n const ex = new Error(\"Duplicate SubId\");\n return onError([\"Duplicate SubId: \" + Sub_Internal_SubId_toString(subId), ex]);\n}\n\nexport function Sub_Internal_Fx_tryStop(onError, subId, sub) {\n try {\n disposeSafe(sub);\n }\n catch (ex) {\n onError([\"Error stopping subscription: \" + Sub_Internal_SubId_toString(subId), ex]);\n }\n}\n\nexport function Sub_Internal_Fx_tryStart(onError, dispatch, subId, start) {\n try {\n return [subId, start(dispatch)];\n }\n catch (ex) {\n onError([\"Error starting subscription: \" + Sub_Internal_SubId_toString(subId), ex]);\n return undefined;\n }\n}\n\nexport function Sub_Internal_Fx_stop(onError, subs) {\n iterate((tupledArg) => {\n Sub_Internal_Fx_tryStop(onError, tupledArg[0], tupledArg[1]);\n }, subs);\n}\n\nexport function Sub_Internal_Fx_change(onError, dispatch, dupes, toStop, toKeep, toStart) {\n iterate((subId) => {\n Sub_Internal_Fx_warnDupe(onError, subId);\n }, dupes);\n iterate((tupledArg) => {\n Sub_Internal_Fx_tryStop(onError, tupledArg[0], tupledArg[1]);\n }, toStop);\n return append(toKeep, choose((tupledArg_1) => Sub_Internal_Fx_tryStart(onError, dispatch, tupledArg_1[0], tupledArg_1[1]), toStart));\n}\n\nexport function Sub_Internal_NewSubs_init() {\n return [empty(), empty_1({\n Compare: compare,\n }), empty()];\n}\n\nexport function Sub_Internal_NewSubs__newSubs() {\n return Sub_Internal_NewSubs_init()[2];\n}\n\nexport function Sub_Internal_NewSubs__newKeys() {\n return Sub_Internal_NewSubs_init()[1];\n}\n\nexport function Sub_Internal_NewSubs__dupes() {\n return Sub_Internal_NewSubs_init()[0];\n}\n\nexport function Sub_Internal_NewSubs_update(subId, start, dupes, newKeys, newSubs) {\n if (contains(subId, newKeys)) {\n return [cons(subId, dupes), newKeys, newSubs];\n }\n else {\n return [dupes, add(subId, newKeys), cons([subId, start], newSubs)];\n }\n}\n\nexport function Sub_Internal_NewSubs_calculate(subs) {\n return foldBack((tupledArg, tupledArg_1) => Sub_Internal_NewSubs_update(tupledArg[0], tupledArg[1], tupledArg_1[0], tupledArg_1[1], tupledArg_1[2]), subs, Sub_Internal_NewSubs_init());\n}\n\nexport const Sub_Internal_empty = empty();\n\nexport function Sub_Internal_diff(activeSubs, sub) {\n const keys = ofList(map((tuple) => tuple[0], activeSubs), {\n Compare: compare,\n });\n const patternInput = Sub_Internal_NewSubs_calculate(sub);\n const newKeys = patternInput[1];\n const dupes = patternInput[0];\n if (keys.Equals(newKeys)) {\n return [dupes, empty(), activeSubs, empty()];\n }\n else {\n const patternInput_1 = partition((tupledArg) => contains(tupledArg[0], newKeys), activeSubs);\n return [dupes, patternInput_1[1], patternInput_1[0], filter((tupledArg_1) => !contains(tupledArg_1[0], keys), patternInput[2])];\n }\n}\n\n","import { subscribe } from \"./Observable.js\";\nimport { some, value } from \"./Option.js\";\nimport { Choice_tryValueIfChoice1Of2, Choice_tryValueIfChoice2Of2 } from \"./Choice.js\";\nexport class Event$2 {\n constructor() {\n this.delegates = [];\n }\n _add(d) {\n this.delegates.push(d);\n }\n _remove(d) {\n const index = this.delegates.indexOf(d);\n if (index > -1) {\n this.delegates.splice(index, 1);\n }\n }\n get Publish() {\n return createEvent(h => { this._add(h); }, h => { this._remove(h); });\n }\n Trigger(senderOrValue, valueOrUndefined) {\n let sender = null;\n const value = valueOrUndefined === undefined ? senderOrValue : (sender = senderOrValue, valueOrUndefined);\n this.delegates.forEach(f => { f(sender, value); });\n }\n}\nexport class Event extends Event$2 {\n}\nexport function add(callback, sourceEvent) {\n subscribe(callback, sourceEvent);\n}\nexport function choose(chooser, sourceEvent) {\n const ev = new Event();\n add((t) => {\n const u = chooser(t);\n if (u != null) {\n ev.Trigger(value(u));\n }\n }, sourceEvent);\n return ev.Publish;\n}\nexport function filter(predicate, sourceEvent) {\n return choose((x) => predicate(x) ? some(x) : undefined, sourceEvent);\n}\nexport function map(mapping, sourceEvent) {\n const ev = new Event();\n add((t) => ev.Trigger(mapping(t)), sourceEvent);\n return ev.Publish;\n}\nexport function merge(event1, event2) {\n const ev = new Event();\n const fn = (x) => ev.Trigger(x);\n add(fn, event1);\n add(fn, event2);\n return ev.Publish;\n}\nexport function pairwise(sourceEvent) {\n const ev = new Event();\n let last;\n let haveLast = false;\n add((next) => {\n if (haveLast) {\n ev.Trigger([last, next]);\n }\n last = next;\n haveLast = true;\n }, sourceEvent);\n return ev.Publish;\n}\nexport function partition(predicate, sourceEvent) {\n return [filter(predicate, sourceEvent), filter((x) => !predicate(x), sourceEvent)];\n}\nexport function scan(collector, state, sourceEvent) {\n return map((t) => state = collector(state, t), sourceEvent);\n}\nexport function split(splitter, sourceEvent) {\n return [\n choose((v) => Choice_tryValueIfChoice1Of2(splitter(v)), sourceEvent),\n choose((v) => Choice_tryValueIfChoice2Of2(splitter(v)), sourceEvent),\n ];\n}\nexport function createEvent(addHandler, removeHandler) {\n return {\n AddHandler(h) { addHandler(h); },\n RemoveHandler(h) { removeHandler(h); },\n Subscribe(r) {\n const h = ((_, args) => r.OnNext(args));\n addHandler(h);\n return {\n Dispose() { removeHandler(h); }\n };\n }\n };\n}\n","import { Event } from \"./Event.js\";\nexport class Timer {\n constructor(interval) {\n this._enabled = false;\n this._isDisposed = false;\n this._intervalId = 0;\n this._timeoutId = 0;\n this.Interval = interval && interval > 0 ? interval : 100;\n this.AutoReset = true;\n this._elapsed = new Event();\n }\n Elapsed() {\n return this._elapsed.Publish;\n }\n get Enabled() {\n return this._enabled;\n }\n set Enabled(x) {\n if (!this._isDisposed && this._enabled !== x) {\n this._enabled = x;\n if (this._enabled) {\n if (this.AutoReset) {\n this._intervalId = setInterval(() => {\n if (!this.AutoReset) {\n this.Enabled = false;\n }\n this._elapsed.Trigger(new Date());\n }, this.Interval);\n }\n else {\n this._timeoutId = setTimeout(() => {\n this.Enabled = false;\n this._timeoutId = 0;\n if (this.AutoReset) {\n this.Enabled = true;\n }\n this._elapsed.Trigger(new Date());\n }, this.Interval);\n }\n }\n else {\n if (this._timeoutId) {\n clearTimeout(this._timeoutId);\n this._timeoutId = 0;\n }\n if (this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = 0;\n }\n }\n }\n }\n Dispose() {\n this.Enabled = false;\n this._isDisposed = true;\n }\n Close() {\n this.Dispose();\n }\n Start() {\n this.Enabled = true;\n }\n Stop() {\n this.Enabled = false;\n }\n}\nexport default Timer;\n","import { Choice_tryValueIfChoice1Of2, Choice_tryValueIfChoice2Of2 } from \"./Choice.js\";\nimport { value } from \"./Option.js\";\nexport class Observer {\n constructor(onNext, onError, onCompleted) {\n this.OnNext = onNext;\n this.OnError = onError || ((_e) => { return; });\n this.OnCompleted = onCompleted || (() => { return; });\n }\n}\nclass Observable {\n constructor(subscribe) {\n this.Subscribe = subscribe;\n }\n}\nfunction protect(f, succeed, fail) {\n try {\n return succeed(f());\n }\n catch (e) {\n fail(e);\n }\n}\nexport function add(callback, source) {\n source.Subscribe(new Observer(callback));\n}\nexport function choose(chooser, source) {\n return new Observable((observer) => source.Subscribe(new Observer((t) => protect(() => chooser(t), (u) => { if (u != null) {\n observer.OnNext(value(u));\n } }, observer.OnError), observer.OnError, observer.OnCompleted)));\n}\nexport function filter(predicate, source) {\n return choose((x) => predicate(x) ? x : void 0, source);\n}\nexport function map(mapping, source) {\n return new Observable((observer) => source.Subscribe(new Observer((t) => {\n protect(() => mapping(t), observer.OnNext, observer.OnError);\n }, observer.OnError, observer.OnCompleted)));\n}\nexport function merge(source1, source2) {\n return new Observable((observer) => {\n let stopped = false;\n let completed1 = false;\n let completed2 = false;\n const h1 = source1.Subscribe(new Observer((v) => { if (!stopped) {\n observer.OnNext(v);\n } }, (e) => {\n if (!stopped) {\n stopped = true;\n observer.OnError(e);\n }\n }, () => {\n if (!stopped) {\n completed1 = true;\n if (completed2) {\n stopped = true;\n observer.OnCompleted();\n }\n }\n }));\n const h2 = source2.Subscribe(new Observer((v) => { if (!stopped) {\n observer.OnNext(v);\n } }, (e) => {\n if (!stopped) {\n stopped = true;\n observer.OnError(e);\n }\n }, () => {\n if (!stopped) {\n completed2 = true;\n if (completed1) {\n stopped = true;\n observer.OnCompleted();\n }\n }\n }));\n return {\n Dispose() {\n h1.Dispose();\n h2.Dispose();\n },\n };\n });\n}\nexport function pairwise(source) {\n return new Observable((observer) => {\n let last;\n return source.Subscribe(new Observer((next) => {\n if (last != null) {\n observer.OnNext([last, next]);\n }\n last = next;\n }, observer.OnError, observer.OnCompleted));\n });\n}\nexport function partition(predicate, source) {\n return [filter(predicate, source), filter((x) => !predicate(x), source)];\n}\nexport function scan(collector, state, source) {\n return new Observable((observer) => {\n return source.Subscribe(new Observer((t) => {\n protect(() => collector(state, t), (u) => { state = u; observer.OnNext(u); }, observer.OnError);\n }, observer.OnError, observer.OnCompleted));\n });\n}\nexport function split(splitter, source) {\n return [\n choose((v) => Choice_tryValueIfChoice1Of2(splitter(v)), source),\n choose((v) => Choice_tryValueIfChoice2Of2(splitter(v)), source)\n ];\n}\nexport function subscribe(callback, source) {\n return source.Subscribe(new Observer(callback));\n}\n","import { ensureErrorOrException } from './Types.js';\nexport class CancellationToken {\n constructor(cancelled = false) {\n this._id = 0;\n this._cancelled = cancelled;\n this._listeners = new Map();\n }\n get isCancelled() {\n return this._cancelled;\n }\n cancel() {\n if (!this._cancelled) {\n this._cancelled = true;\n for (const [, listener] of this._listeners) {\n listener();\n }\n }\n }\n addListener(f) {\n const id = this._id;\n this._listeners.set(this._id++, f);\n return id;\n }\n removeListener(id) {\n return this._listeners.delete(id);\n }\n register(f, state) {\n const $ = this;\n const id = this.addListener(state == null ? f : () => f(state));\n return { Dispose() { $.removeListener(id); } };\n }\n Dispose() {\n // Implement IDisposable for compatibility but do nothing\n // According to docs, calling Dispose does not trigger cancellation\n // https://docs.microsoft.com/en-us/dotnet/api/system.threading.cancellationtokensource.dispose?view=net-6.0\n }\n}\nexport class OperationCanceledError extends Error {\n constructor() {\n super(\"The operation was canceled\");\n Object.setPrototypeOf(this, OperationCanceledError.prototype);\n }\n}\nexport class Trampoline {\n static get maxTrampolineCallCount() {\n return 2000;\n }\n constructor() {\n this.callCount = 0;\n }\n incrementAndCheck() {\n return this.callCount++ > Trampoline.maxTrampolineCallCount;\n }\n hijack(f) {\n this.callCount = 0;\n setTimeout(f, 0);\n }\n}\nexport function protectedCont(f) {\n return (ctx) => {\n if (ctx.cancelToken.isCancelled) {\n ctx.onCancel(new OperationCanceledError());\n }\n else if (ctx.trampoline.incrementAndCheck()) {\n ctx.trampoline.hijack(() => {\n try {\n f(ctx);\n }\n catch (err) {\n ctx.onError(ensureErrorOrException(err));\n }\n });\n }\n else {\n try {\n f(ctx);\n }\n catch (err) {\n ctx.onError(ensureErrorOrException(err));\n }\n }\n };\n}\nexport function protectedBind(computation, binder) {\n return protectedCont((ctx) => {\n computation({\n onSuccess: (x) => {\n try {\n binder(x)(ctx);\n }\n catch (err) {\n ctx.onError(ensureErrorOrException(err));\n }\n },\n onError: ctx.onError,\n onCancel: ctx.onCancel,\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n });\n });\n}\nexport function protectedReturn(value) {\n return protectedCont((ctx) => ctx.onSuccess(value));\n}\nexport class AsyncBuilder {\n Bind(computation, binder) {\n return protectedBind(computation, binder);\n }\n Combine(computation1, computation2) {\n return this.Bind(computation1, () => computation2);\n }\n Delay(generator) {\n return protectedCont((ctx) => generator()(ctx));\n }\n For(sequence, body) {\n const iter = sequence[Symbol.iterator]();\n let cur = iter.next();\n return this.While(() => !cur.done, this.Delay(() => {\n const res = body(cur.value);\n cur = iter.next();\n return res;\n }));\n }\n Return(value) {\n return protectedReturn(value);\n }\n ReturnFrom(computation) {\n return computation;\n }\n TryFinally(computation, compensation) {\n return protectedCont((ctx) => {\n computation({\n onSuccess: (x) => {\n compensation();\n ctx.onSuccess(x);\n },\n onError: (x) => {\n compensation();\n ctx.onError(x);\n },\n onCancel: (x) => {\n compensation();\n ctx.onCancel(x);\n },\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n });\n });\n }\n TryWith(computation, catchHandler) {\n return protectedCont((ctx) => {\n computation({\n onSuccess: ctx.onSuccess,\n onCancel: ctx.onCancel,\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n onError: (ex) => {\n try {\n catchHandler(ex)(ctx);\n }\n catch (err) {\n ctx.onError(ensureErrorOrException(err));\n }\n },\n });\n });\n }\n Using(resource, binder) {\n return this.TryFinally(binder(resource), () => resource.Dispose());\n }\n While(guard, computation) {\n if (guard()) {\n return this.Bind(computation, () => this.While(guard, computation));\n }\n else {\n return this.Return(void 0);\n }\n }\n Zero() {\n return protectedCont((ctx) => ctx.onSuccess(void 0));\n }\n}\nexport const singleton = new AsyncBuilder();\n","import { Union } from \"./Types.js\";\nimport { union_type } from \"./Reflection.js\";\nimport { some } from \"./Option.js\";\nexport function FSharpChoice$2_Choice1Of2(Item) {\n return new FSharpChoice$2(0, [Item]);\n}\nexport function FSharpChoice$2_Choice2Of2(Item) {\n return new FSharpChoice$2(1, [Item]);\n}\nexport class FSharpChoice$2 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Choice1Of2\", \"Choice2Of2\"];\n }\n}\nexport function FSharpChoice$2_$reflection(gen0, gen1) {\n return union_type(\"FSharp.Core.FSharpChoice`2\", [gen0, gen1], FSharpChoice$2, () => [[[\"Item\", gen0]], [[\"Item\", gen1]]]);\n}\nexport function FSharpChoice$3_Choice1Of3(Item) {\n return new FSharpChoice$3(0, [Item]);\n}\nexport function FSharpChoice$3_Choice2Of3(Item) {\n return new FSharpChoice$3(1, [Item]);\n}\nexport function FSharpChoice$3_Choice3Of3(Item) {\n return new FSharpChoice$3(2, [Item]);\n}\nexport class FSharpChoice$3 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Choice1Of3\", \"Choice2Of3\", \"Choice3Of3\"];\n }\n}\nexport function FSharpChoice$3_$reflection(gen0, gen1, gen2) {\n return union_type(\"FSharp.Core.FSharpChoice`3\", [gen0, gen1, gen2], FSharpChoice$3, () => [[[\"Item\", gen0]], [[\"Item\", gen1]], [[\"Item\", gen2]]]);\n}\nexport function FSharpChoice$4_Choice1Of4(Item) {\n return new FSharpChoice$4(0, [Item]);\n}\nexport function FSharpChoice$4_Choice2Of4(Item) {\n return new FSharpChoice$4(1, [Item]);\n}\nexport function FSharpChoice$4_Choice3Of4(Item) {\n return new FSharpChoice$4(2, [Item]);\n}\nexport function FSharpChoice$4_Choice4Of4(Item) {\n return new FSharpChoice$4(3, [Item]);\n}\nexport class FSharpChoice$4 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Choice1Of4\", \"Choice2Of4\", \"Choice3Of4\", \"Choice4Of4\"];\n }\n}\nexport function FSharpChoice$4_$reflection(gen0, gen1, gen2, gen3) {\n return union_type(\"FSharp.Core.FSharpChoice`4\", [gen0, gen1, gen2, gen3], FSharpChoice$4, () => [[[\"Item\", gen0]], [[\"Item\", gen1]], [[\"Item\", gen2]], [[\"Item\", gen3]]]);\n}\nexport function FSharpChoice$5_Choice1Of5(Item) {\n return new FSharpChoice$5(0, [Item]);\n}\nexport function FSharpChoice$5_Choice2Of5(Item) {\n return new FSharpChoice$5(1, [Item]);\n}\nexport function FSharpChoice$5_Choice3Of5(Item) {\n return new FSharpChoice$5(2, [Item]);\n}\nexport function FSharpChoice$5_Choice4Of5(Item) {\n return new FSharpChoice$5(3, [Item]);\n}\nexport function FSharpChoice$5_Choice5Of5(Item) {\n return new FSharpChoice$5(4, [Item]);\n}\nexport class FSharpChoice$5 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Choice1Of5\", \"Choice2Of5\", \"Choice3Of5\", \"Choice4Of5\", \"Choice5Of5\"];\n }\n}\nexport function FSharpChoice$5_$reflection(gen0, gen1, gen2, gen3, gen4) {\n return union_type(\"FSharp.Core.FSharpChoice`5\", [gen0, gen1, gen2, gen3, gen4], FSharpChoice$5, () => [[[\"Item\", gen0]], [[\"Item\", gen1]], [[\"Item\", gen2]], [[\"Item\", gen3]], [[\"Item\", gen4]]]);\n}\nexport function FSharpChoice$6_Choice1Of6(Item) {\n return new FSharpChoice$6(0, [Item]);\n}\nexport function FSharpChoice$6_Choice2Of6(Item) {\n return new FSharpChoice$6(1, [Item]);\n}\nexport function FSharpChoice$6_Choice3Of6(Item) {\n return new FSharpChoice$6(2, [Item]);\n}\nexport function FSharpChoice$6_Choice4Of6(Item) {\n return new FSharpChoice$6(3, [Item]);\n}\nexport function FSharpChoice$6_Choice5Of6(Item) {\n return new FSharpChoice$6(4, [Item]);\n}\nexport function FSharpChoice$6_Choice6Of6(Item) {\n return new FSharpChoice$6(5, [Item]);\n}\nexport class FSharpChoice$6 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Choice1Of6\", \"Choice2Of6\", \"Choice3Of6\", \"Choice4Of6\", \"Choice5Of6\", \"Choice6Of6\"];\n }\n}\nexport function FSharpChoice$6_$reflection(gen0, gen1, gen2, gen3, gen4, gen5) {\n return union_type(\"FSharp.Core.FSharpChoice`6\", [gen0, gen1, gen2, gen3, gen4, gen5], FSharpChoice$6, () => [[[\"Item\", gen0]], [[\"Item\", gen1]], [[\"Item\", gen2]], [[\"Item\", gen3]], [[\"Item\", gen4]], [[\"Item\", gen5]]]);\n}\nexport function FSharpChoice$7_Choice1Of7(Item) {\n return new FSharpChoice$7(0, [Item]);\n}\nexport function FSharpChoice$7_Choice2Of7(Item) {\n return new FSharpChoice$7(1, [Item]);\n}\nexport function FSharpChoice$7_Choice3Of7(Item) {\n return new FSharpChoice$7(2, [Item]);\n}\nexport function FSharpChoice$7_Choice4Of7(Item) {\n return new FSharpChoice$7(3, [Item]);\n}\nexport function FSharpChoice$7_Choice5Of7(Item) {\n return new FSharpChoice$7(4, [Item]);\n}\nexport function FSharpChoice$7_Choice6Of7(Item) {\n return new FSharpChoice$7(5, [Item]);\n}\nexport function FSharpChoice$7_Choice7Of7(Item) {\n return new FSharpChoice$7(6, [Item]);\n}\nexport class FSharpChoice$7 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Choice1Of7\", \"Choice2Of7\", \"Choice3Of7\", \"Choice4Of7\", \"Choice5Of7\", \"Choice6Of7\", \"Choice7Of7\"];\n }\n}\nexport function FSharpChoice$7_$reflection(gen0, gen1, gen2, gen3, gen4, gen5, gen6) {\n return union_type(\"FSharp.Core.FSharpChoice`7\", [gen0, gen1, gen2, gen3, gen4, gen5, gen6], FSharpChoice$7, () => [[[\"Item\", gen0]], [[\"Item\", gen1]], [[\"Item\", gen2]], [[\"Item\", gen3]], [[\"Item\", gen4]], [[\"Item\", gen5]], [[\"Item\", gen6]]]);\n}\nexport function Choice_makeChoice1Of2(x) {\n return FSharpChoice$2_Choice1Of2(x);\n}\nexport function Choice_makeChoice2Of2(x) {\n return FSharpChoice$2_Choice2Of2(x);\n}\nexport function Choice_tryValueIfChoice1Of2(x) {\n if (x.tag === /* Choice1Of2 */ 0) {\n return some(x.fields[0]);\n }\n else {\n return undefined;\n }\n}\nexport function Choice_tryValueIfChoice2Of2(x) {\n if (x.tag === /* Choice2Of2 */ 1) {\n return some(x.fields[0]);\n }\n else {\n return undefined;\n }\n}\n","import { OperationCanceledError, Trampoline } from \"./AsyncBuilder.js\";\nimport { CancellationToken } from \"./AsyncBuilder.js\";\nimport { protectedCont } from \"./AsyncBuilder.js\";\nimport { protectedBind } from \"./AsyncBuilder.js\";\nimport { protectedReturn } from \"./AsyncBuilder.js\";\nimport { Choice_makeChoice1Of2, Choice_makeChoice2Of2 } from \"./Choice.js\";\nimport { TimeoutException } from \"./SystemException.js\";\n// Implemented just for type references\nexport class Async {\n}\nfunction emptyContinuation(_x) {\n // NOP\n}\n// see AsyncBuilder.Delay\nfunction delay(generator) {\n return protectedCont((ctx) => generator()(ctx));\n}\n// MakeAsync: body:(AsyncActivation<'T> -> AsyncReturn) -> Async<'T>\nexport function makeAsync(body) {\n return body;\n}\n// Invoke: computation: Async<'T> -> ctxt:AsyncActivation<'T> -> AsyncReturn\nexport function invoke(computation, ctx) {\n return computation(ctx);\n}\n// CallThenInvoke: ctxt:AsyncActivation<'T> -> result1:'U -> part2:('U -> Async<'T>) -> AsyncReturn\nexport function callThenInvoke(ctx, result1, part2) {\n return part2(result1)(ctx);\n}\n// Bind: ctxt:AsyncActivation<'T> -> part1:Async<'U> -> part2:('U -> Async<'T>) -> AsyncReturn\nexport function bind(ctx, part1, part2) {\n return protectedBind(part1, part2)(ctx);\n}\nexport function createCancellationToken(arg) {\n const token = new CancellationToken(typeof arg === \"boolean\" ? arg : false);\n if (typeof arg === \"number\") {\n setTimeout(() => { token.cancel(); }, arg);\n }\n return token;\n}\nexport function cancel(token) {\n token.cancel();\n}\nexport function cancelAfter(token, ms) {\n setTimeout(() => { token.cancel(); }, ms);\n}\nexport function isCancellationRequested(token) {\n return token != null && token.isCancelled;\n}\nexport function throwIfCancellationRequested(token) {\n if (token != null && token.isCancelled) {\n throw new Error(\"Operation is cancelled\");\n }\n}\nfunction throwAfter(millisecondsDueTime) {\n return protectedCont((ctx) => {\n let tokenId;\n const timeoutId = setTimeout(() => {\n ctx.cancelToken.removeListener(tokenId);\n ctx.onError(new TimeoutException());\n }, millisecondsDueTime);\n tokenId = ctx.cancelToken.addListener(() => {\n clearTimeout(timeoutId);\n ctx.onCancel(new OperationCanceledError());\n });\n });\n}\nexport function startChild(computation, ms) {\n if (ms) {\n const computationWithTimeout = protectedBind(parallel2(computation, throwAfter(ms)), xs => protectedReturn(xs[0]));\n return startChild(computationWithTimeout);\n }\n const promise = startAsPromise(computation);\n // JS Promises are hot, computation has already started\n // but we delay returning the result\n return protectedCont((ctx) => protectedReturn(awaitPromise(promise))(ctx));\n}\nexport function awaitPromise(p) {\n return fromContinuations((conts) => p.then(conts[0]).catch((err) => (err instanceof OperationCanceledError\n ? conts[2] : conts[1])(err)));\n}\nexport function cancellationToken() {\n return protectedCont((ctx) => ctx.onSuccess(ctx.cancelToken));\n}\nexport const defaultCancellationToken = new CancellationToken();\nexport function catchAsync(work) {\n return protectedCont((ctx) => {\n work({\n onSuccess: (x) => ctx.onSuccess(Choice_makeChoice1Of2(x)),\n onError: (ex) => ctx.onSuccess(Choice_makeChoice2Of2(ex)),\n onCancel: ctx.onCancel,\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n });\n });\n}\nexport function fromContinuations(f) {\n return protectedCont((ctx) => f([ctx.onSuccess, ctx.onError, ctx.onCancel]));\n}\nexport function ignore(computation) {\n return protectedBind(computation, (_x) => protectedReturn(void 0));\n}\nexport function parallel(computations) {\n return delay(() => awaitPromise(Promise.all(Array.from(computations, (w) => startAsPromise(w)))));\n}\nfunction parallel2(a, b) {\n return delay(() => awaitPromise(Promise.all([startAsPromise(a), startAsPromise(b)])));\n}\nexport function sequential(computations) {\n function _sequential(computations) {\n let pr = Promise.resolve([]);\n for (const c of computations) {\n pr = pr.then(results => startAsPromise(c).then(r => results.concat([r])));\n }\n return pr;\n }\n return delay(() => awaitPromise(_sequential(computations)));\n}\nexport function sleep(millisecondsDueTime) {\n return protectedCont((ctx) => {\n let tokenId;\n const timeoutId = setTimeout(() => {\n ctx.cancelToken.removeListener(tokenId);\n ctx.onSuccess(void 0);\n }, millisecondsDueTime);\n tokenId = ctx.cancelToken.addListener(() => {\n clearTimeout(timeoutId);\n ctx.onCancel(new OperationCanceledError());\n });\n });\n}\nexport function runSynchronously() {\n throw new Error(\"Asynchronous code cannot be run synchronously in JS\");\n}\nexport function start(computation, cancellationToken) {\n return startWithContinuations(computation, cancellationToken);\n}\nexport function startImmediate(computation, cancellationToken) {\n return start(computation, cancellationToken);\n}\nexport function startWithContinuations(computation, continuation, exceptionContinuation, cancellationContinuation, cancelToken) {\n if (typeof continuation !== \"function\") {\n cancelToken = continuation;\n continuation = undefined;\n }\n const trampoline = new Trampoline();\n computation({\n onSuccess: continuation ? continuation : emptyContinuation,\n onError: exceptionContinuation ? exceptionContinuation : emptyContinuation,\n onCancel: cancellationContinuation ? cancellationContinuation : emptyContinuation,\n cancelToken: cancelToken ? cancelToken : defaultCancellationToken,\n trampoline,\n });\n}\nexport function startAsPromise(computation, cancellationToken) {\n return new Promise((resolve, reject) => startWithContinuations(computation, resolve, reject, reject, cancellationToken ? cancellationToken : defaultCancellationToken));\n}\nexport default Async;\n","import { singleton, concat, map, empty, iterate } from \"../fable-library-js.4.19.3/List.js\";\nimport { singleton as singleton_1 } from \"../fable-library-js.4.19.3/AsyncBuilder.js\";\nimport { startImmediate, catchAsync } from \"../fable-library-js.4.19.3/Async.js\";\nimport { Timer_delay } from \"./prelude.fs.js\";\n\n/**\n * Execute the commands using the supplied dispatcher\n */\nexport function Cmd_exec(onError, dispatch, cmd) {\n iterate((call) => {\n try {\n call(dispatch);\n }\n catch (ex) {\n onError(ex);\n }\n }, cmd);\n}\n\n/**\n * None - no commands, also known as `[]`\n */\nexport function Cmd_none() {\n return empty();\n}\n\n/**\n * When emitting the message, map to another type\n */\nexport function Cmd_map(f, cmd) {\n return map((g) => ((arg_1) => {\n g((arg) => {\n arg_1(f(arg));\n });\n }), cmd);\n}\n\n/**\n * Aggregate multiple commands\n */\nexport function Cmd_batch(cmds) {\n return concat(cmds);\n}\n\n/**\n * Command to call the effect\n */\nexport function Cmd_ofEffect(effect) {\n return singleton(effect);\n}\n\n/**\n * Command to evaluate a simple function and map the result\n * into success or error (of exception)\n */\nexport function Cmd_OfFunc_either(task, arg, ofSuccess, ofError) {\n return singleton((dispatch) => {\n try {\n dispatch(ofSuccess(task(arg)));\n }\n catch (x) {\n dispatch(ofError(x));\n }\n });\n}\n\n/**\n * Command to evaluate a simple function and map the success to a message\n * discarding any possible error\n */\nexport function Cmd_OfFunc_perform(task, arg, ofSuccess) {\n return singleton((dispatch) => {\n try {\n dispatch(ofSuccess(task(arg)));\n }\n catch (x) {\n }\n });\n}\n\n/**\n * Command to evaluate a simple function and map the error (in case of exception)\n */\nexport function Cmd_OfFunc_attempt(task, arg, ofError) {\n return singleton((dispatch) => {\n try {\n task(arg);\n }\n catch (x) {\n dispatch(ofError(x));\n }\n });\n}\n\n/**\n * Command that will evaluate an async block and map the result\n * into success or error (of exception)\n */\nexport function Cmd_OfAsyncWith_either(start, task, arg, ofSuccess, ofError) {\n return singleton((arg_1) => {\n start(singleton_1.Delay(() => singleton_1.Bind(catchAsync(task(arg)), (_arg) => {\n const r = _arg;\n arg_1((r.tag === 1) ? ofError(r.fields[0]) : ofSuccess(r.fields[0]));\n return singleton_1.Zero();\n })));\n });\n}\n\n/**\n * Command that will evaluate an async block and map the success\n */\nexport function Cmd_OfAsyncWith_perform(start, task, arg, ofSuccess) {\n return singleton((arg_1) => {\n start(singleton_1.Delay(() => singleton_1.Bind(catchAsync(task(arg)), (_arg) => {\n const r = _arg;\n if (r.tag === 0) {\n arg_1(ofSuccess(r.fields[0]));\n return singleton_1.Zero();\n }\n else {\n return singleton_1.Zero();\n }\n })));\n });\n}\n\n/**\n * Command that will evaluate an async block and map the error (of exception)\n */\nexport function Cmd_OfAsyncWith_attempt(start, task, arg, ofError) {\n return singleton((arg_1) => {\n start(singleton_1.Delay(() => singleton_1.Bind(catchAsync(task(arg)), (_arg) => {\n const r = _arg;\n if (r.tag === 1) {\n arg_1(ofError(r.fields[0]));\n return singleton_1.Zero();\n }\n else {\n return singleton_1.Zero();\n }\n })));\n });\n}\n\nexport function Cmd_OfAsync_start(x) {\n Timer_delay(1, (_arg) => {\n startImmediate(x);\n });\n}\n\n/**\n * Command to call `promise` block and map the results\n */\nexport function Cmd_OfPromise_either(task, arg, ofSuccess, ofError) {\n return singleton((dispatch) => {\n task(arg).then((arg_3) => {\n dispatch(ofSuccess(arg_3));\n }).catch((arg_2) => {\n dispatch(ofError(arg_2));\n });\n });\n}\n\n/**\n * Command to call `promise` block and map the success\n */\nexport function Cmd_OfPromise_perform(task, arg, ofSuccess) {\n return singleton((dispatch) => {\n task(arg).then((arg_1) => dispatch(ofSuccess(arg_1)));\n });\n}\n\n/**\n * Command to call `promise` block and map the error\n */\nexport function Cmd_OfPromise_attempt(task, arg, ofError) {\n return singleton((dispatch) => {\n task(arg).catch((arg_2) => {\n dispatch(ofError(arg_2));\n });\n });\n}\n\n","import { some } from \"../fable-library-js.4.19.3/Option.js\";\nimport Timer from \"../fable-library-js.4.19.3/Timer.js\";\nimport { add } from \"../fable-library-js.4.19.3/Observable.js\";\n\nexport function Log_onError(text, ex) {\n console.error(some(text), ex);\n}\n\nexport function Log_toConsole(text, o) {\n console.log(some(text), o);\n}\n\nexport function Timer_delay(interval, callback) {\n let t;\n let returnVal = new Timer(interval);\n returnVal.AutoReset = false;\n t = returnVal;\n add(callback, t.Elapsed());\n t.Enabled = true;\n t.Start();\n}\n\n","import { FSharpRef } from \"./Types.js\";\nexport function tryParse(str, defValue) {\n // TODO: test if value is valid and in range\n if (str != null && /\\S/.test(str)) {\n const v = +str.replace(\"_\", \"\");\n if (!Number.isNaN(v)) {\n defValue.contents = v;\n return true;\n }\n }\n return false;\n}\nexport function parse(str) {\n const defValue = new FSharpRef(0);\n if (tryParse(str, defValue)) {\n return defValue.contents;\n }\n else {\n throw new Error(`The input string ${str} was not in a correct format.`);\n }\n}\n// JS Number.isFinite function evals false for NaN\nexport function isPositiveInfinity(x) {\n return x === Number.POSITIVE_INFINITY;\n}\nexport function isNegativeInfinity(x) {\n return x === Number.NEGATIVE_INFINITY;\n}\nexport function isInfinity(x) {\n return x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY;\n}\nexport function max(x, y) {\n return x > y ? x : y;\n}\nexport function min(x, y) {\n return x < y ? x : y;\n}\nexport function maxMagnitude(x, y) {\n return Math.abs(x) > Math.abs(y) ? x : y;\n}\nexport function minMagnitude(x, y) {\n return Math.abs(x) < Math.abs(y) ? x : y;\n}\nexport function clamp(x, min, max) {\n return x < min ? min : x > max ? max : x;\n}\n","import { compare } from \"./Util.js\";\nimport { unfold, delay } from \"./Seq.js\";\nimport { toUInt64, toInt64, op_Addition, fromZero } from \"./BigInt.js\";\nimport { op_Addition as op_Addition_1, fromParts } from \"./Decimal.js\";\nexport function makeRangeStepFunction(step, stop, zero, add) {\n const stepComparedWithZero = compare(step, zero) | 0;\n if (stepComparedWithZero === 0) {\n throw new Error(\"The step of a range cannot be zero\");\n }\n const stepGreaterThanZero = stepComparedWithZero > 0;\n return (x) => {\n const comparedWithLast = compare(x, stop) | 0;\n return ((stepGreaterThanZero && (comparedWithLast <= 0)) ? true : (!stepGreaterThanZero && (comparedWithLast >= 0))) ? [x, add(x, step)] : undefined;\n };\n}\nexport function integralRangeStep(start, step, stop, zero, add) {\n const stepFn = makeRangeStepFunction(step, stop, zero, add);\n return delay(() => unfold(stepFn, start));\n}\nexport function rangeBigInt(start, step, stop) {\n return integralRangeStep(start, step, stop, fromZero(), op_Addition);\n}\nexport function rangeDecimal(start, step, stop) {\n return integralRangeStep(start, step, stop, fromParts(0, 0, 0, false, 0), op_Addition_1);\n}\nexport function rangeDouble(start, step, stop) {\n return integralRangeStep(start, step, stop, 0, (x, y) => (x + y));\n}\nexport function rangeInt64(start, step, stop) {\n return integralRangeStep(start, step, stop, 0n, (x, y) => toInt64(op_Addition(x, y)));\n}\nexport function rangeUInt64(start, step, stop) {\n return integralRangeStep(start, step, stop, 0n, (x, y) => toUInt64(op_Addition(x, y)));\n}\nexport function rangeChar(start, stop) {\n const intStop = ~~stop.charCodeAt(0) | 0;\n return delay(() => unfold((c) => {\n if (c <= intStop) {\n return [String.fromCharCode(c), c + 1];\n }\n else {\n return undefined;\n }\n }, ~~start.charCodeAt(0)));\n}\n","import { Union } from \"../fable-library-js.4.19.3/Types.js\";\nimport { class_type, union_type, int32_type, array_type } from \"../fable-library-js.4.19.3/Reflection.js\";\nimport { setItem, item as item_1, fill } from \"../fable-library-js.4.19.3/Array.js\";\nimport { max } from \"../fable-library-js.4.19.3/Double.js\";\nimport { some } from \"../fable-library-js.4.19.3/Option.js\";\nimport { singleton, collect, take, skip, append, delay } from \"../fable-library-js.4.19.3/Seq.js\";\nimport { defaultOf } from \"../fable-library-js.4.19.3/Util.js\";\nimport { rangeDouble } from \"../fable-library-js.4.19.3/Range.js\";\n\nexport class RingState$1 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Writable\", \"ReadWritable\"];\n }\n}\n\nexport function RingState$1_$reflection(gen0) {\n return union_type(\"Elmish.RingState`1\", [gen0], RingState$1, () => [[[\"wx\", array_type(gen0)], [\"ix\", int32_type]], [[\"rw\", array_type(gen0)], [\"wix\", int32_type], [\"rix\", int32_type]]]);\n}\n\nexport class RingBuffer$1 {\n constructor(size) {\n this.state = (new RingState$1(0, [fill(new Array(max(size, 10)), 0, max(size, 10), null), 0]));\n }\n}\n\nexport function RingBuffer$1_$reflection(gen0) {\n return class_type(\"Elmish.RingBuffer`1\", [gen0], RingBuffer$1);\n}\n\nexport function RingBuffer$1_$ctor_Z524259A4(size) {\n return new RingBuffer$1(size);\n}\n\nexport function RingBuffer$1__Pop(__) {\n const matchValue = __.state;\n if (matchValue.tag === 1) {\n const wix = matchValue.fields[1] | 0;\n const rix = matchValue.fields[2] | 0;\n const items = matchValue.fields[0];\n const rix$0027 = ((rix + 1) % items.length) | 0;\n if (rix$0027 === wix) {\n __.state = (new RingState$1(0, [items, wix]));\n }\n else {\n __.state = (new RingState$1(1, [items, wix, rix$0027]));\n }\n return some(item_1(rix, items));\n }\n else {\n return undefined;\n }\n}\n\nexport function RingBuffer$1__Push_2B595(__, item) {\n const matchValue = __.state;\n if (matchValue.tag === 1) {\n const wix_1 = matchValue.fields[1] | 0;\n const rix = matchValue.fields[2] | 0;\n const items_1 = matchValue.fields[0];\n setItem(items_1, wix_1, item);\n const wix$0027 = ((wix_1 + 1) % items_1.length) | 0;\n if (wix$0027 === rix) {\n __.state = (new RingState$1(1, [RingBuffer$1__doubleSize(__, rix, items_1), items_1.length, 0]));\n }\n else {\n __.state = (new RingState$1(1, [items_1, wix$0027, rix]));\n }\n }\n else {\n const ix = matchValue.fields[1] | 0;\n const items = matchValue.fields[0];\n setItem(items, ix, item);\n const wix = ((ix + 1) % items.length) | 0;\n __.state = (new RingState$1(1, [items, wix, ix]));\n }\n}\n\nexport function RingBuffer$1__doubleSize(this$, ix, items) {\n return Array.from(delay(() => append(skip(ix, items), delay(() => append(take(ix, items), delay(() => collect((matchValue) => singleton(defaultOf()), rangeDouble(0, 1, items.length))))))));\n}\n\n","import { Record } from \"../fable-library-js.4.19.3/Types.js\";\nimport { record_type, bool_type, class_type, string_type, tuple_type, list_type, lambda_type, unit_type } from \"../fable-library-js.4.19.3/Reflection.js\";\nimport { Sub_Internal_Fx_change, Sub_Internal_diff, Sub_Internal_Fx_stop, Sub_Internal_empty, Sub_none } from \"./sub.fs.js\";\nimport { curry3, curry2, uncurry2 } from \"../fable-library-js.4.19.3/Util.js\";\nimport { Log_toConsole, Log_onError } from \"./prelude.fs.js\";\nimport { Cmd_exec, Cmd_none } from \"./cmd.fs.js\";\nimport { map as map_1 } from \"../fable-library-js.4.19.3/List.js\";\nimport { RingBuffer$1__Pop, RingBuffer$1__Push_2B595, RingBuffer$1_$ctor_Z524259A4 } from \"./ring.fs.js\";\nimport { value as value_2 } from \"../fable-library-js.4.19.3/Option.js\";\nimport { printf, toText } from \"../fable-library-js.4.19.3/String.js\";\n\nexport class Program$4 extends Record {\n constructor(init, update, subscribe, view, setState, onError, termination) {\n super();\n this.init = init;\n this.update = update;\n this.subscribe = subscribe;\n this.view = view;\n this.setState = setState;\n this.onError = onError;\n this.termination = termination;\n }\n}\n\nexport function Program$4_$reflection(gen0, gen1, gen2, gen3) {\n return record_type(\"Elmish.Program`4\", [gen0, gen1, gen2, gen3], Program$4, () => [[\"init\", lambda_type(gen0, tuple_type(gen1, list_type(lambda_type(lambda_type(gen2, unit_type), unit_type))))], [\"update\", lambda_type(gen2, lambda_type(gen1, tuple_type(gen1, list_type(lambda_type(lambda_type(gen2, unit_type), unit_type)))))], [\"subscribe\", lambda_type(gen1, list_type(tuple_type(list_type(string_type), lambda_type(lambda_type(gen2, unit_type), class_type(\"System.IDisposable\")))))], [\"view\", lambda_type(gen1, lambda_type(lambda_type(gen2, unit_type), gen3))], [\"setState\", lambda_type(gen1, lambda_type(lambda_type(gen2, unit_type), unit_type))], [\"onError\", lambda_type(tuple_type(string_type, class_type(\"System.Exception\")), unit_type)], [\"termination\", tuple_type(lambda_type(gen2, bool_type), lambda_type(gen1, unit_type))]]);\n}\n\n/**\n * Typical program, new commands are produced by `init` and `update` along with the new state.\n */\nexport function ProgramModule_mkProgram(init, update, view) {\n return new Program$4(init, update, (_arg) => Sub_none(), view, uncurry2((model) => {\n const f1 = curry2(view)(model);\n return (arg) => {\n f1(arg);\n };\n }), (tupledArg) => {\n Log_onError(tupledArg[0], tupledArg[1]);\n }, [(_arg_1) => false, (value_1) => {\n }]);\n}\n\n/**\n * Simple program that produces only new state with `init` and `update`.\n */\nexport function ProgramModule_mkSimple(init, update, view) {\n return new Program$4((arg) => [init(arg), Cmd_none()], uncurry2((msg) => {\n const f1_1 = curry2(update)(msg);\n return (arg_1) => [f1_1(arg_1), Cmd_none()];\n }), (_arg) => Sub_none(), view, uncurry2((model) => {\n const f1_2 = curry2(view)(model);\n return (arg_2) => {\n f1_2(arg_2);\n };\n }), (tupledArg) => {\n Log_onError(tupledArg[0], tupledArg[1]);\n }, [(_arg_1) => false, (value_1) => {\n }]);\n}\n\n/**\n * Subscribe to external source of events, overrides existing subscription.\n * Return the subscriptions that should be active based on the current model.\n * Subscriptions will be started or stopped automatically to match.\n */\nexport function ProgramModule_withSubscription(subscribe, program) {\n return new Program$4(program.init, program.update, subscribe, program.view, program.setState, program.onError, program.termination);\n}\n\n/**\n * Map existing subscription to external source of events.\n */\nexport function ProgramModule_mapSubscription(map, program) {\n return new Program$4(program.init, program.update, curry2(map)(program.subscribe), program.view, program.setState, program.onError, program.termination);\n}\n\n/**\n * Trace all the updates to the console\n */\nexport function ProgramModule_withConsoleTrace(program) {\n return new Program$4((arg) => {\n const patternInput = program.init(arg);\n const initModel = patternInput[0];\n Log_toConsole(\"Initial state:\", initModel);\n return [initModel, patternInput[1]];\n }, (msg, model) => {\n Log_toConsole(\"New message:\", msg);\n const patternInput_1 = program.update(msg, model);\n const newModel = patternInput_1[0];\n Log_toConsole(\"Updated state:\", newModel);\n return [newModel, patternInput_1[1]];\n }, (model_1) => {\n const sub = program.subscribe(model_1);\n Log_toConsole(\"Updated subs:\", map_1((tuple) => tuple[0], sub));\n return sub;\n }, program.view, program.setState, program.onError, program.termination);\n}\n\n/**\n * Trace all the messages as they update the model and subscriptions\n */\nexport function ProgramModule_withTrace(trace, program) {\n return new Program$4(program.init, (msg, model) => {\n const patternInput = program.update(msg, model);\n const state = patternInput[0];\n trace(msg, state, map_1((tuple) => tuple[0], program.subscribe(state)));\n return [state, patternInput[1]];\n }, program.subscribe, program.view, program.setState, program.onError, program.termination);\n}\n\n/**\n * Handle dispatch loop exceptions\n */\nexport function ProgramModule_withErrorHandler(onError, program) {\n return new Program$4(program.init, program.update, program.subscribe, program.view, program.setState, onError, program.termination);\n}\n\n/**\n * Exit criteria and the handler, overrides existing.\n */\nexport function ProgramModule_withTermination(predicate, terminate, program) {\n return new Program$4(program.init, program.update, program.subscribe, program.view, program.setState, program.onError, [predicate, terminate]);\n}\n\n/**\n * Map existing criteria and the handler.\n */\nexport function ProgramModule_mapTermination(map, program) {\n return new Program$4(program.init, program.update, program.subscribe, program.view, program.setState, program.onError, map(program.termination));\n}\n\n/**\n * Map existing error handler and return new `Program`\n */\nexport function ProgramModule_mapErrorHandler(map, program) {\n return new Program$4(program.init, program.update, program.subscribe, program.view, program.setState, curry2(map)(program.onError), program.termination);\n}\n\n/**\n * Get the current error handler\n */\nexport function ProgramModule_onError(program) {\n return program.onError;\n}\n\n/**\n * Function to render the view with the latest state\n */\nexport function ProgramModule_withSetState(setState, program) {\n return new Program$4(program.init, program.update, program.subscribe, program.view, setState, program.onError, program.termination);\n}\n\n/**\n * Return the function to render the state\n */\nexport function ProgramModule_setState(program) {\n return curry2(program.setState);\n}\n\n/**\n * Return the view function\n */\nexport function ProgramModule_view(program) {\n return curry2(program.view);\n}\n\n/**\n * Return the init function\n */\nexport function ProgramModule_init(program) {\n return program.init;\n}\n\n/**\n * Return the update function\n */\nexport function ProgramModule_update(program) {\n return curry2(program.update);\n}\n\n/**\n * Map the program type\n */\nexport function ProgramModule_map(mapInit, mapUpdate, mapView, mapSetState, mapSubscribe, mapTermination, program) {\n const init = curry2(mapInit)(program.init);\n const update = curry3(mapUpdate)(curry2(program.update));\n const view = curry3(mapView)(curry2(program.view));\n const setState = curry3(mapSetState)(curry2(program.setState));\n return new Program$4(init, uncurry2(update), curry2(mapSubscribe)(program.subscribe), uncurry2(view), uncurry2(setState), program.onError, mapTermination(program.termination));\n}\n\n/**\n * Start the program loop.\n * syncDispatch: specify how to serialize dispatch calls.\n * arg: argument to pass to the init() function.\n * program: program created with 'mkSimple' or 'mkProgram'.\n */\nexport function ProgramModule_runWithDispatch(syncDispatch, arg, program) {\n let tupledArg_1;\n const patternInput = program.init(arg);\n const model = patternInput[0];\n const sub = program.subscribe(model);\n const patternInput_1 = program.termination;\n const rb = RingBuffer$1_$ctor_Z524259A4(10);\n let reentered = false;\n let state = model;\n let activeSubs = Sub_Internal_empty;\n let terminated = false;\n const dispatch = (msg) => {\n if (!terminated) {\n RingBuffer$1__Push_2B595(rb, msg);\n if (!reentered) {\n reentered = true;\n processMsgs();\n reentered = false;\n }\n }\n };\n const dispatch$0027 = curry2(syncDispatch)(dispatch);\n const processMsgs = () => {\n let tupledArg;\n let nextMsg = RingBuffer$1__Pop(rb);\n while (!terminated && (nextMsg != null)) {\n const msg_1 = value_2(nextMsg);\n try {\n if (patternInput_1[0](msg_1)) {\n Sub_Internal_Fx_stop(program.onError, activeSubs);\n patternInput_1[1](state);\n terminated = true;\n }\n else {\n const patternInput_2 = program.update(msg_1, state);\n const model$0027 = patternInput_2[0];\n const sub$0027 = program.subscribe(model$0027);\n program.setState(model$0027, dispatch$0027);\n activeSubs = ((tupledArg = Sub_Internal_diff(activeSubs, sub$0027), Sub_Internal_Fx_change(program.onError, dispatch$0027, tupledArg[0], tupledArg[1], tupledArg[2], tupledArg[3])));\n Cmd_exec((ex) => {\n program.onError([toText(printf(\"Error handling the message: %A\"))(msg_1), ex]);\n }, dispatch$0027, patternInput_2[1]);\n state = model$0027;\n }\n }\n catch (ex_1) {\n program.onError([toText(printf(\"Unable to process the message: %A\"))(msg_1), ex_1]);\n }\n nextMsg = RingBuffer$1__Pop(rb);\n }\n };\n reentered = true;\n program.setState(model, dispatch$0027);\n activeSubs = ((tupledArg_1 = Sub_Internal_diff(activeSubs, sub), Sub_Internal_Fx_change(program.onError, dispatch$0027, tupledArg_1[0], tupledArg_1[1], tupledArg_1[2], tupledArg_1[3])));\n Cmd_exec((ex_2) => {\n program.onError([toText(printf(\"Error intitializing:\")), ex_2]);\n }, dispatch$0027, patternInput[1]);\n processMsgs();\n reentered = false;\n}\n\n/**\n * Start the single-threaded dispatch loop.\n * arg: argument to pass to the 'init' function.\n * program: program created with 'mkSimple' or 'mkProgram'.\n */\nexport function ProgramModule_runWith(arg, program) {\n ProgramModule_runWithDispatch(uncurry2((x) => x), arg, program);\n}\n\n/**\n * Start the dispatch loop with `unit` for the init() function.\n */\nexport function ProgramModule_run(program) {\n ProgramModule_runWith(undefined, program);\n}\n\n","export var NumberStyles;\n(function (NumberStyles) {\n // None = 0x00000000,\n // AllowLeadingWhite = 0x00000001,\n // AllowTrailingWhite = 0x00000002,\n // AllowLeadingSign = 0x00000004,\n // AllowTrailingSign = 0x00000008,\n // AllowParentheses = 0x00000010,\n // AllowDecimalPoint = 0x00000020,\n // AllowThousands = 0x00000040,\n // AllowExponent = 0x00000080,\n // AllowCurrencySymbol = 0x00000100,\n NumberStyles[NumberStyles[\"AllowHexSpecifier\"] = 512] = \"AllowHexSpecifier\";\n // Integer = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign,\n // HexNumber = AllowLeadingWhite | AllowTrailingWhite | AllowHexSpecifier,\n // Number = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign |\n // AllowTrailingSign | AllowDecimalPoint | AllowThousands,\n // Float = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign |\n // AllowDecimalPoint | AllowExponent,\n // Currency = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |\n // AllowParentheses | AllowDecimalPoint | AllowThousands | AllowCurrencySymbol,\n // Any = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |\n // AllowParentheses | AllowDecimalPoint | AllowThousands | AllowCurrencySymbol | AllowExponent,\n})(NumberStyles || (NumberStyles = {}));\nfunction validResponse(regexMatch, radix) {\n const [/*all*/ , sign, prefix, digits] = regexMatch;\n return {\n sign: sign || \"\",\n prefix: prefix || \"\",\n digits,\n radix,\n };\n}\nfunction getRange(unsigned, bitsize) {\n switch (bitsize) {\n case 8: return unsigned ? [0, 255] : [-128, 127];\n case 16: return unsigned ? [0, 65535] : [-32768, 32767];\n case 32: return unsigned ? [0, 4294967295] : [-2147483648, 2147483647];\n default: throw new Error(\"Invalid bit size.\");\n }\n}\nfunction getInvalidDigits(radix) {\n switch (radix) {\n case 2: return /[^0-1]/;\n case 8: return /[^0-7]/;\n case 10: return /[^0-9]/;\n case 16: return /[^0-9a-fA-F]/;\n default:\n throw new Error(\"Invalid Base.\");\n }\n}\nexport function getPrefix(radix) {\n switch (radix) {\n case 2: return \"0b\";\n case 8: return \"0o\";\n case 10: return \"\";\n case 16: return \"0x\";\n default: return \"\";\n }\n}\nexport function getRadix(prefix, style) {\n if (style & NumberStyles.AllowHexSpecifier) {\n return 16;\n }\n else {\n switch (prefix) {\n case \"0b\":\n case \"0B\": return 2;\n case \"0o\":\n case \"0O\": return 8;\n case \"0x\":\n case \"0X\": return 16;\n default: return 10;\n }\n }\n}\nexport function isValid(str, style, radix) {\n const integerRegex = /^\\s*([\\+\\-])?(0[xXoObB])?([0-9a-fA-F]+)\\s*$/;\n const res = integerRegex.exec(str.replace(/_/g, \"\"));\n if (res != null) {\n const [/*all*/ , /*sign*/ , prefix, digits] = res;\n radix = radix || getRadix(prefix, style);\n const invalidDigits = getInvalidDigits(radix);\n if (!invalidDigits.test(digits)) {\n return validResponse(res, radix);\n }\n }\n return null;\n}\nexport function parse(str, style, unsigned, bitsize, radix) {\n const res = isValid(str, style, radix);\n if (res != null) {\n let v = Number.parseInt(res.sign + res.digits, res.radix);\n if (!Number.isNaN(v)) {\n const [umin, umax] = getRange(true, bitsize);\n if (!unsigned && res.radix !== 10 && v >= umin && v <= umax) {\n v = v << (32 - bitsize) >> (32 - bitsize);\n }\n const [min, max] = getRange(unsigned, bitsize);\n if (v >= min && v <= max) {\n return v;\n }\n }\n }\n throw new Error(`The input string ${str} was not in a correct format.`);\n}\nexport function tryParse(str, style, unsigned, bitsize, defValue) {\n try {\n defValue.contents = parse(str, style, unsigned, bitsize);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function op_UnaryNegation_Int8(x) {\n return x === -128 ? x : -x;\n}\nexport function op_UnaryNegation_Int16(x) {\n return x === -32768 ? x : -x;\n}\nexport function op_UnaryNegation_Int32(x) {\n return x === -2147483648 ? x : -x;\n}\nexport function divRem(x, y, out) {\n const div = ~~(x / y);\n const rem = x % y;\n if (out === void 0) {\n return [div, rem];\n }\n else {\n out.contents = rem;\n return div;\n }\n}\n","import { Record } from \"../fable-library-js.4.19.3/Types.js\";\nimport { obj_type, record_type, bool_type, lambda_type, class_type, unit_type } from \"../fable-library-js.4.19.3/Reflection.js\";\nimport { Component } from \"react\";\nimport * as react from \"react\";\nimport { equalArrays, equals } from \"../fable-library-js.4.19.3/Util.js\";\n\nexport function Internal_updateInputValue(value, e) {\n if (!(e == null) && (e.value !== value)) {\n e.value = value;\n }\n}\n\nexport class LazyProps$1 extends Record {\n constructor(model, render, equal) {\n super();\n this.model = model;\n this.render = render;\n this.equal = equal;\n }\n}\n\nexport function LazyProps$1_$reflection(gen0) {\n return record_type(\"Elmish.React.LazyProps`1\", [gen0], LazyProps$1, () => [[\"model\", gen0], [\"render\", lambda_type(unit_type, class_type(\"Fable.React.ReactElement\"))], [\"equal\", lambda_type(gen0, lambda_type(gen0, bool_type))]]);\n}\n\nexport class Components_LazyView$1 extends Component {\n constructor(props) {\n super(props);\n }\n shouldComponentUpdate(nextProps, _nextState) {\n const this$ = this;\n return !(this$.props).equal((this$.props).model, nextProps.model);\n }\n render() {\n const this$ = this;\n return (this$.props).render();\n }\n}\n\nexport function Components_LazyView$1_$reflection(gen0) {\n return class_type(\"Elmish.React.Components.LazyView`1\", [gen0], Components_LazyView$1, class_type(\"Fable.React.Component`2\", [LazyProps$1_$reflection(gen0), obj_type], Component));\n}\n\nexport function Components_LazyView$1_$ctor_Z7829D94B(props) {\n return new Components_LazyView$1(props);\n}\n\n/**\n * Avoid rendering the view unless the model has changed.\n * equal: function to compare the previous and the new states\n * view: function to render the model\n * state: new state to render\n */\nexport function Common_lazyViewWith(equal, view, state) {\n const props = new LazyProps$1(state, () => view(state), equal);\n return react.createElement(Components_LazyView$1, props);\n}\n\n/**\n * Avoid rendering the view unless the model has changed.\n * equal: function to compare the previous and the new states\n * view: function to render the model using the dispatch\n * state: new state to render\n * dispatch: dispatch function\n */\nexport function Common_lazyView2With(equal, view, state, dispatch) {\n const props = new LazyProps$1(state, () => view(state, dispatch), equal);\n return react.createElement(Components_LazyView$1, props);\n}\n\n/**\n * Avoid rendering the view unless the model has changed.\n * equal: function to compare the previous and the new model (a tuple of two states)\n * view: function to render the model using the dispatch\n * state1: new state to render\n * state2: new state to render\n * dispatch: dispatch function\n */\nexport function Common_lazyView3With(equal, view, state1, state2, dispatch) {\n const props = new LazyProps$1([state1, state2], () => view(state1, state2, dispatch), equal);\n return react.createElement(Components_LazyView$1, props);\n}\n\n/**\n * Avoid rendering the view unless the model has changed.\n * view: function of model to render the view\n */\nexport function Common_lazyView(view) {\n return (state) => Common_lazyViewWith(equals, view, state);\n}\n\n/**\n * Avoid rendering the view unless the model has changed.\n * view: function of two arguments to render the model using the dispatch\n */\nexport function Common_lazyView2(view) {\n return (state) => ((dispatch) => Common_lazyView2With(equals, view, state, dispatch));\n}\n\n/**\n * Avoid rendering the view unless the model has changed.\n * view: function of three arguments to render the model using the dispatch\n */\nexport function Common_lazyView3(view) {\n return (state) => ((state_1) => ((dispatch) => Common_lazyView3With(equalArrays, view, state, state_1, dispatch)));\n}\n\n","import { parse } from \"../fable-library-js.4.19.3/Int32.js\";\nimport * as react from \"react\";\nimport { ProgramModule_view, ProgramModule_withSetState } from \"../Fable.Elmish.4.2.0/program.fs.js\";\nimport { uncurry2 } from \"../fable-library-js.4.19.3/Util.js\";\nimport * as client from \"react-dom/client\";\nimport * as react_dom from \"react-dom\";\nimport { Common_lazyView2With } from \"./common.fs.js\";\n\nexport const Program_Internal_useRootApi = (() => {\n try {\n return parse(react.version.slice(undefined, 1 + 1), 511, false, 32) >= 18;\n }\n catch (matchValue) {\n return false;\n }\n})();\n\nexport function Program_Internal_withReactBatchedUsing(lazyView2With, placeholderId, program) {\n let lastRequest, root;\n return ProgramModule_withSetState(uncurry2((lastRequest = undefined, Program_Internal_useRootApi ? ((root = client.createRoot(document.getElementById(placeholderId)), (model) => ((dispatch) => {\n if (lastRequest != null) {\n const r = lastRequest;\n window.cancelAnimationFrame(r);\n }\n lastRequest = window.requestAnimationFrame((_arg) => {\n root.render(lazyView2With((x) => ((y) => (x === y)), ProgramModule_view(program), model, dispatch));\n });\n }))) : ((model_1) => ((dispatch_1) => {\n if (lastRequest != null) {\n const r_1 = lastRequest;\n window.cancelAnimationFrame(r_1);\n }\n lastRequest = window.requestAnimationFrame((_arg_1) => {\n react_dom.render(lazyView2With((x_1) => ((y_1) => (x_1 === y_1)), ProgramModule_view(program), model_1, dispatch_1), document.getElementById(placeholderId));\n });\n })))), program);\n}\n\nexport function Program_Internal_withReactSynchronousUsing(lazyView2With, placeholderId, program) {\n let root;\n return ProgramModule_withSetState(uncurry2(Program_Internal_useRootApi ? ((root = client.createRoot(document.getElementById(placeholderId)), (model) => ((dispatch) => {\n root.render(lazyView2With((x) => ((y) => (x === y)), ProgramModule_view(program), model, dispatch));\n }))) : ((model_1) => ((dispatch_1) => {\n react_dom.render(lazyView2With((x_1) => ((y_1) => (x_1 === y_1)), ProgramModule_view(program), model_1, dispatch_1), document.getElementById(placeholderId));\n }))), program);\n}\n\nexport function Program_Internal_withReactHydrateUsing(lazyView2With, placeholderId, program) {\n let root;\n return ProgramModule_withSetState(uncurry2(Program_Internal_useRootApi ? ((root = undefined, (model) => ((dispatch) => {\n if (root != null) {\n const root_1 = root;\n root_1.render(lazyView2With((x_1) => ((y_1) => (x_1 === y_1)), ProgramModule_view(program), model, dispatch));\n }\n else {\n root = client.hydrateRoot(document.getElementById(placeholderId), lazyView2With((x) => ((y) => (x === y)), ProgramModule_view(program), model, dispatch));\n }\n }))) : ((model_1) => ((dispatch_1) => {\n react_dom.hydrate(lazyView2With((x_2) => ((y_2) => (x_2 === y_2)), ProgramModule_view(program), model_1, dispatch_1), document.getElementById(placeholderId));\n }))), program);\n}\n\n/**\n * Renders React root component inside html element identified by placeholderId.\n * Uses `requestAnimationFrame` to batch updates to prevent drops in frame rate.\n * NOTE: This may have unexpected effects in React controlled inputs, see https://github.com/elmish/react/issues/12\n */\nexport function Program_withReactBatched(placeholderId, program) {\n return Program_Internal_withReactBatchedUsing((equal, view, state, dispatch) => Common_lazyView2With(uncurry2(equal), uncurry2(view), state, dispatch), placeholderId, program);\n}\n\n/**\n * Renders React root component inside html element identified by placeholderId.\n * New renders are triggered immediately after an update.\n */\nexport function Program_withReactSynchronous(placeholderId, program) {\n return Program_Internal_withReactSynchronousUsing((equal, view, state, dispatch) => Common_lazyView2With(uncurry2(equal), uncurry2(view), state, dispatch), placeholderId, program);\n}\n\n/**\n * Renders React root component inside html element identified by placeholderId using `React.hydrate`.\n */\nexport function Program_withReactHydrate(placeholderId, program) {\n return Program_Internal_withReactHydrateUsing((equal, view, state, dispatch) => Common_lazyView2With(uncurry2(equal), uncurry2(view), state, dispatch), placeholderId, program);\n}\n\n","import { record_type, bool_type, list_type, option_type, class_type } from \"./Reflection.js\";\nimport { some, value as value_1 } from \"./Option.js\";\nimport { structuralHash, compare, toIterator, equals, disposeSafe, getEnumerator, isArrayLike } from \"./Util.js\";\nimport { singleton, ofArrayWithTail, head, tail, isEmpty as isEmpty_1, fold as fold_1, empty as empty_1, FSharpList, cons } from \"./List.js\";\nimport { map as map_2, item, fill, setItem } from \"./Array.js\";\nimport { Record } from \"./Types.js\";\nimport { tryPick as tryPick_1, pick as pick_1, iterate as iterate_1, compareWith, map as map_1, unfold } from \"./Seq.js\";\nimport { format, join } from \"./String.js\";\nexport class MapTreeLeaf$2 {\n constructor(k, v) {\n this.k = k;\n this.v = v;\n }\n}\nexport function MapTreeLeaf$2_$reflection(gen0, gen1) {\n return class_type(\"Map.MapTreeLeaf`2\", [gen0, gen1], MapTreeLeaf$2);\n}\nexport function MapTreeLeaf$2_$ctor_5BDDA1(k, v) {\n return new MapTreeLeaf$2(k, v);\n}\nexport function MapTreeLeaf$2__get_Key(_) {\n return _.k;\n}\nexport function MapTreeLeaf$2__get_Value(_) {\n return _.v;\n}\nexport class MapTreeNode$2 extends MapTreeLeaf$2 {\n constructor(k, v, left, right, h) {\n super(k, v);\n this.left = left;\n this.right = right;\n this.h = (h | 0);\n }\n}\nexport function MapTreeNode$2_$reflection(gen0, gen1) {\n return class_type(\"Map.MapTreeNode`2\", [gen0, gen1], MapTreeNode$2, MapTreeLeaf$2_$reflection(gen0, gen1));\n}\nexport function MapTreeNode$2_$ctor_Z39DE9543(k, v, left, right, h) {\n return new MapTreeNode$2(k, v, left, right, h);\n}\nexport function MapTreeNode$2__get_Left(_) {\n return _.left;\n}\nexport function MapTreeNode$2__get_Right(_) {\n return _.right;\n}\nexport function MapTreeNode$2__get_Height(_) {\n return _.h;\n}\nexport function MapTreeModule_empty() {\n return undefined;\n}\nexport function MapTreeModule_sizeAux(acc_mut, m_mut) {\n MapTreeModule_sizeAux: while (true) {\n const acc = acc_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n acc_mut = MapTreeModule_sizeAux(acc + 1, MapTreeNode$2__get_Left(mn));\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_sizeAux;\n }\n else {\n return (acc + 1) | 0;\n }\n }\n else {\n return acc | 0;\n }\n break;\n }\n}\nexport function MapTreeModule_size(x) {\n return MapTreeModule_sizeAux(0, x);\n}\nexport function MapTreeModule_mk(l, k, v, r) {\n let mn, mn_1;\n let hl;\n const m = l;\n if (m != null) {\n const m2 = value_1(m);\n hl = ((m2 instanceof MapTreeNode$2) ? ((mn = m2, MapTreeNode$2__get_Height(mn))) : 1);\n }\n else {\n hl = 0;\n }\n let hr;\n const m_1 = r;\n if (m_1 != null) {\n const m2_1 = value_1(m_1);\n hr = ((m2_1 instanceof MapTreeNode$2) ? ((mn_1 = m2_1, MapTreeNode$2__get_Height(mn_1))) : 1);\n }\n else {\n hr = 0;\n }\n const m_2 = ((hl < hr) ? hr : hl) | 0;\n if (m_2 === 0) {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, v);\n }\n else {\n return MapTreeNode$2_$ctor_Z39DE9543(k, v, l, r, m_2 + 1);\n }\n}\nexport function MapTreeModule_rebalance(t1, k, v, t2) {\n let mn, mn_1, m_2, m2_2, mn_2, m_3, m2_3, mn_3;\n let t1h;\n const m = t1;\n if (m != null) {\n const m2 = value_1(m);\n t1h = ((m2 instanceof MapTreeNode$2) ? ((mn = m2, MapTreeNode$2__get_Height(mn))) : 1);\n }\n else {\n t1h = 0;\n }\n let t2h;\n const m_1 = t2;\n if (m_1 != null) {\n const m2_1 = value_1(m_1);\n t2h = ((m2_1 instanceof MapTreeNode$2) ? ((mn_1 = m2_1, MapTreeNode$2__get_Height(mn_1))) : 1);\n }\n else {\n t2h = 0;\n }\n if (t2h > (t1h + 2)) {\n const matchValue = value_1(t2);\n if (matchValue instanceof MapTreeNode$2) {\n const t2$0027 = matchValue;\n if (((m_2 = MapTreeNode$2__get_Left(t2$0027), (m_2 != null) ? ((m2_2 = value_1(m_2), (m2_2 instanceof MapTreeNode$2) ? ((mn_2 = m2_2, MapTreeNode$2__get_Height(mn_2))) : 1)) : 0)) > (t1h + 1)) {\n const matchValue_1 = value_1(MapTreeNode$2__get_Left(t2$0027));\n if (matchValue_1 instanceof MapTreeNode$2) {\n const t2l = matchValue_1;\n return MapTreeModule_mk(MapTreeModule_mk(t1, k, v, MapTreeNode$2__get_Left(t2l)), MapTreeLeaf$2__get_Key(t2l), MapTreeLeaf$2__get_Value(t2l), MapTreeModule_mk(MapTreeNode$2__get_Right(t2l), MapTreeLeaf$2__get_Key(t2$0027), MapTreeLeaf$2__get_Value(t2$0027), MapTreeNode$2__get_Right(t2$0027)));\n }\n else {\n throw new Error(\"internal error: Map.rebalance\");\n }\n }\n else {\n return MapTreeModule_mk(MapTreeModule_mk(t1, k, v, MapTreeNode$2__get_Left(t2$0027)), MapTreeLeaf$2__get_Key(t2$0027), MapTreeLeaf$2__get_Value(t2$0027), MapTreeNode$2__get_Right(t2$0027));\n }\n }\n else {\n throw new Error(\"internal error: Map.rebalance\");\n }\n }\n else if (t1h > (t2h + 2)) {\n const matchValue_2 = value_1(t1);\n if (matchValue_2 instanceof MapTreeNode$2) {\n const t1$0027 = matchValue_2;\n if (((m_3 = MapTreeNode$2__get_Right(t1$0027), (m_3 != null) ? ((m2_3 = value_1(m_3), (m2_3 instanceof MapTreeNode$2) ? ((mn_3 = m2_3, MapTreeNode$2__get_Height(mn_3))) : 1)) : 0)) > (t2h + 1)) {\n const matchValue_3 = value_1(MapTreeNode$2__get_Right(t1$0027));\n if (matchValue_3 instanceof MapTreeNode$2) {\n const t1r = matchValue_3;\n return MapTreeModule_mk(MapTreeModule_mk(MapTreeNode$2__get_Left(t1$0027), MapTreeLeaf$2__get_Key(t1$0027), MapTreeLeaf$2__get_Value(t1$0027), MapTreeNode$2__get_Left(t1r)), MapTreeLeaf$2__get_Key(t1r), MapTreeLeaf$2__get_Value(t1r), MapTreeModule_mk(MapTreeNode$2__get_Right(t1r), k, v, t2));\n }\n else {\n throw new Error(\"internal error: Map.rebalance\");\n }\n }\n else {\n return MapTreeModule_mk(MapTreeNode$2__get_Left(t1$0027), MapTreeLeaf$2__get_Key(t1$0027), MapTreeLeaf$2__get_Value(t1$0027), MapTreeModule_mk(MapTreeNode$2__get_Right(t1$0027), k, v, t2));\n }\n }\n else {\n throw new Error(\"internal error: Map.rebalance\");\n }\n }\n else {\n return MapTreeModule_mk(t1, k, v, t2);\n }\n}\nexport function MapTreeModule_add(comparer, k, v, m) {\n if (m != null) {\n const m2 = value_1(m);\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (c < 0) {\n return MapTreeModule_rebalance(MapTreeModule_add(comparer, k, v, MapTreeNode$2__get_Left(mn)), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn));\n }\n else if (c === 0) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, v, MapTreeNode$2__get_Left(mn), MapTreeNode$2__get_Right(mn), MapTreeNode$2__get_Height(mn));\n }\n else {\n return MapTreeModule_rebalance(MapTreeNode$2__get_Left(mn), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeModule_add(comparer, k, v, MapTreeNode$2__get_Right(mn)));\n }\n }\n else if (c < 0) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, v, MapTreeModule_empty(), m, 2);\n }\n else if (c === 0) {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, v);\n }\n else {\n return MapTreeNode$2_$ctor_Z39DE9543(k, v, m, MapTreeModule_empty(), 2);\n }\n }\n else {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, v);\n }\n}\nexport function MapTreeModule_tryFind(comparer_mut, k_mut, m_mut) {\n MapTreeModule_tryFind: while (true) {\n const comparer = comparer_mut, k = k_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (c === 0) {\n return some(MapTreeLeaf$2__get_Value(m2));\n }\n else if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n comparer_mut = comparer;\n k_mut = k;\n m_mut = ((c < 0) ? MapTreeNode$2__get_Left(mn) : MapTreeNode$2__get_Right(mn));\n continue MapTreeModule_tryFind;\n }\n else {\n return undefined;\n }\n }\n else {\n return undefined;\n }\n break;\n }\n}\nexport function MapTreeModule_find(comparer, k, m) {\n const matchValue = MapTreeModule_tryFind(comparer, k, m);\n if (matchValue == null) {\n throw new Error();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function MapTreeModule_partition1(comparer, f, k, v, acc1, acc2) {\n if (f(k, v)) {\n return [MapTreeModule_add(comparer, k, v, acc1), acc2];\n }\n else {\n return [acc1, MapTreeModule_add(comparer, k, v, acc2)];\n }\n}\nexport function MapTreeModule_partitionAux(comparer_mut, f_mut, m_mut, acc__mut, acc__1_mut) {\n MapTreeModule_partitionAux: while (true) {\n const comparer = comparer_mut, f = f_mut, m = m_mut, acc_ = acc__mut, acc__1 = acc__1_mut;\n const acc = [acc_, acc__1];\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const acc_1 = MapTreeModule_partitionAux(comparer, f, MapTreeNode$2__get_Right(mn), acc[0], acc[1]);\n const acc_4 = MapTreeModule_partition1(comparer, f, MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), acc_1[0], acc_1[1]);\n comparer_mut = comparer;\n f_mut = f;\n m_mut = MapTreeNode$2__get_Left(mn);\n acc__mut = acc_4[0];\n acc__1_mut = acc_4[1];\n continue MapTreeModule_partitionAux;\n }\n else {\n return MapTreeModule_partition1(comparer, f, MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), acc[0], acc[1]);\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function MapTreeModule_partition(comparer, f, m) {\n return MapTreeModule_partitionAux(comparer, f, m, MapTreeModule_empty(), MapTreeModule_empty());\n}\nexport function MapTreeModule_filter1(comparer, f, k, v, acc) {\n if (f(k, v)) {\n return MapTreeModule_add(comparer, k, v, acc);\n }\n else {\n return acc;\n }\n}\nexport function MapTreeModule_filterAux(comparer_mut, f_mut, m_mut, acc_mut) {\n MapTreeModule_filterAux: while (true) {\n const comparer = comparer_mut, f = f_mut, m = m_mut, acc = acc_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const acc_1 = MapTreeModule_filterAux(comparer, f, MapTreeNode$2__get_Left(mn), acc);\n const acc_2 = MapTreeModule_filter1(comparer, f, MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), acc_1);\n comparer_mut = comparer;\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n acc_mut = acc_2;\n continue MapTreeModule_filterAux;\n }\n else {\n return MapTreeModule_filter1(comparer, f, MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), acc);\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function MapTreeModule_filter(comparer, f, m) {\n return MapTreeModule_filterAux(comparer, f, m, MapTreeModule_empty());\n}\nexport function MapTreeModule_spliceOutSuccessor(m) {\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (MapTreeNode$2__get_Left(mn) == null) {\n return [MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn)];\n }\n else {\n const patternInput = MapTreeModule_spliceOutSuccessor(MapTreeNode$2__get_Left(mn));\n return [patternInput[0], patternInput[1], MapTreeModule_mk(patternInput[2], MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn))];\n }\n }\n else {\n return [MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), MapTreeModule_empty()];\n }\n }\n else {\n throw new Error(\"internal error: Map.spliceOutSuccessor\");\n }\n}\nexport function MapTreeModule_remove(comparer, k, m) {\n if (m != null) {\n const m2 = value_1(m);\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (c < 0) {\n return MapTreeModule_rebalance(MapTreeModule_remove(comparer, k, MapTreeNode$2__get_Left(mn)), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn));\n }\n else if (c === 0) {\n if (MapTreeNode$2__get_Left(mn) == null) {\n return MapTreeNode$2__get_Right(mn);\n }\n else if (MapTreeNode$2__get_Right(mn) == null) {\n return MapTreeNode$2__get_Left(mn);\n }\n else {\n const patternInput = MapTreeModule_spliceOutSuccessor(MapTreeNode$2__get_Right(mn));\n return MapTreeModule_mk(MapTreeNode$2__get_Left(mn), patternInput[0], patternInput[1], patternInput[2]);\n }\n }\n else {\n return MapTreeModule_rebalance(MapTreeNode$2__get_Left(mn), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeModule_remove(comparer, k, MapTreeNode$2__get_Right(mn)));\n }\n }\n else if (c === 0) {\n return MapTreeModule_empty();\n }\n else {\n return m;\n }\n }\n else {\n return MapTreeModule_empty();\n }\n}\nexport function MapTreeModule_change(comparer, k, u, m) {\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(mn)) | 0;\n if (c < 0) {\n return MapTreeModule_rebalance(MapTreeModule_change(comparer, k, u, MapTreeNode$2__get_Left(mn)), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn));\n }\n else if (c === 0) {\n const matchValue_1 = u(some(MapTreeLeaf$2__get_Value(mn)));\n if (matchValue_1 != null) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, value_1(matchValue_1), MapTreeNode$2__get_Left(mn), MapTreeNode$2__get_Right(mn), MapTreeNode$2__get_Height(mn));\n }\n else if (MapTreeNode$2__get_Left(mn) == null) {\n return MapTreeNode$2__get_Right(mn);\n }\n else if (MapTreeNode$2__get_Right(mn) == null) {\n return MapTreeNode$2__get_Left(mn);\n }\n else {\n const patternInput = MapTreeModule_spliceOutSuccessor(MapTreeNode$2__get_Right(mn));\n return MapTreeModule_mk(MapTreeNode$2__get_Left(mn), patternInput[0], patternInput[1], patternInput[2]);\n }\n }\n else {\n return MapTreeModule_rebalance(MapTreeNode$2__get_Left(mn), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeModule_change(comparer, k, u, MapTreeNode$2__get_Right(mn)));\n }\n }\n else {\n const c_1 = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (c_1 < 0) {\n const matchValue_2 = u(undefined);\n if (matchValue_2 != null) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, value_1(matchValue_2), MapTreeModule_empty(), m, 2);\n }\n else {\n return m;\n }\n }\n else if (c_1 === 0) {\n const matchValue_3 = u(some(MapTreeLeaf$2__get_Value(m2)));\n if (matchValue_3 != null) {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, value_1(matchValue_3));\n }\n else {\n return MapTreeModule_empty();\n }\n }\n else {\n const matchValue_4 = u(undefined);\n if (matchValue_4 != null) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, value_1(matchValue_4), m, MapTreeModule_empty(), 2);\n }\n else {\n return m;\n }\n }\n }\n }\n else {\n const matchValue = u(undefined);\n if (matchValue != null) {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, value_1(matchValue));\n }\n else {\n return m;\n }\n }\n}\nexport function MapTreeModule_mem(comparer_mut, k_mut, m_mut) {\n MapTreeModule_mem: while (true) {\n const comparer = comparer_mut, k = k_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (c < 0) {\n comparer_mut = comparer;\n k_mut = k;\n m_mut = MapTreeNode$2__get_Left(mn);\n continue MapTreeModule_mem;\n }\n else if (c === 0) {\n return true;\n }\n else {\n comparer_mut = comparer;\n k_mut = k;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_mem;\n }\n }\n else {\n return c === 0;\n }\n }\n else {\n return false;\n }\n break;\n }\n}\nexport function MapTreeModule_iterOpt(f_mut, m_mut) {\n MapTreeModule_iterOpt: while (true) {\n const f = f_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n MapTreeModule_iterOpt(f, MapTreeNode$2__get_Left(mn));\n f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn));\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_iterOpt;\n }\n else {\n f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n break;\n }\n}\nexport function MapTreeModule_iter(f, m) {\n MapTreeModule_iterOpt(f, m);\n}\nexport function MapTreeModule_tryPickOpt(f_mut, m_mut) {\n MapTreeModule_tryPickOpt: while (true) {\n const f = f_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const matchValue = MapTreeModule_tryPickOpt(f, MapTreeNode$2__get_Left(mn));\n if (matchValue == null) {\n const matchValue_1 = f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn));\n if (matchValue_1 == null) {\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_tryPickOpt;\n }\n else {\n return matchValue_1;\n }\n }\n else {\n return matchValue;\n }\n }\n else {\n return f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n else {\n return undefined;\n }\n break;\n }\n}\nexport function MapTreeModule_tryPick(f, m) {\n return MapTreeModule_tryPickOpt(f, m);\n}\nexport function MapTreeModule_existsOpt(f_mut, m_mut) {\n MapTreeModule_existsOpt: while (true) {\n const f = f_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (MapTreeModule_existsOpt(f, MapTreeNode$2__get_Left(mn)) ? true : f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn))) {\n return true;\n }\n else {\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_existsOpt;\n }\n }\n else {\n return f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n else {\n return false;\n }\n break;\n }\n}\nexport function MapTreeModule_exists(f, m) {\n return MapTreeModule_existsOpt(f, m);\n}\nexport function MapTreeModule_forallOpt(f_mut, m_mut) {\n MapTreeModule_forallOpt: while (true) {\n const f = f_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (MapTreeModule_forallOpt(f, MapTreeNode$2__get_Left(mn)) && f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn))) {\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_forallOpt;\n }\n else {\n return false;\n }\n }\n else {\n return f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n else {\n return true;\n }\n break;\n }\n}\nexport function MapTreeModule_forall(f, m) {\n return MapTreeModule_forallOpt(f, m);\n}\nexport function MapTreeModule_map(f, m) {\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const l2 = MapTreeModule_map(f, MapTreeNode$2__get_Left(mn));\n const v2 = f(MapTreeLeaf$2__get_Value(mn));\n const r2 = MapTreeModule_map(f, MapTreeNode$2__get_Right(mn));\n return MapTreeNode$2_$ctor_Z39DE9543(MapTreeLeaf$2__get_Key(mn), v2, l2, r2, MapTreeNode$2__get_Height(mn));\n }\n else {\n return MapTreeLeaf$2_$ctor_5BDDA1(MapTreeLeaf$2__get_Key(m2), f(MapTreeLeaf$2__get_Value(m2)));\n }\n }\n else {\n return MapTreeModule_empty();\n }\n}\nexport function MapTreeModule_mapiOpt(f, m) {\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const l2 = MapTreeModule_mapiOpt(f, MapTreeNode$2__get_Left(mn));\n const v2 = f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn));\n const r2 = MapTreeModule_mapiOpt(f, MapTreeNode$2__get_Right(mn));\n return MapTreeNode$2_$ctor_Z39DE9543(MapTreeLeaf$2__get_Key(mn), v2, l2, r2, MapTreeNode$2__get_Height(mn));\n }\n else {\n return MapTreeLeaf$2_$ctor_5BDDA1(MapTreeLeaf$2__get_Key(m2), f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2)));\n }\n }\n else {\n return MapTreeModule_empty();\n }\n}\nexport function MapTreeModule_mapi(f, m) {\n return MapTreeModule_mapiOpt(f, m);\n}\nexport function MapTreeModule_foldBackOpt(f_mut, m_mut, x_mut) {\n MapTreeModule_foldBackOpt: while (true) {\n const f = f_mut, m = m_mut, x = x_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const x_1 = MapTreeModule_foldBackOpt(f, MapTreeNode$2__get_Right(mn), x);\n const x_2 = f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), x_1);\n f_mut = f;\n m_mut = MapTreeNode$2__get_Left(mn);\n x_mut = x_2;\n continue MapTreeModule_foldBackOpt;\n }\n else {\n return f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), x);\n }\n }\n else {\n return x;\n }\n break;\n }\n}\nexport function MapTreeModule_foldBack(f, m, x) {\n return MapTreeModule_foldBackOpt(f, m, x);\n}\nexport function MapTreeModule_foldOpt(f_mut, x_mut, m_mut) {\n MapTreeModule_foldOpt: while (true) {\n const f = f_mut, x = x_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n f_mut = f;\n x_mut = f(MapTreeModule_foldOpt(f, x, MapTreeNode$2__get_Left(mn)), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn));\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_foldOpt;\n }\n else {\n return f(x, MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n else {\n return x;\n }\n break;\n }\n}\nexport function MapTreeModule_fold(f, x, m) {\n return MapTreeModule_foldOpt(f, x, m);\n}\nexport function MapTreeModule_foldSectionOpt(comparer, lo, hi, f, m, x) {\n const foldFromTo = (f_1_mut, m_1_mut, x_1_mut) => {\n foldFromTo: while (true) {\n const f_1 = f_1_mut, m_1 = m_1_mut, x_1 = x_1_mut;\n if (m_1 != null) {\n const m2 = value_1(m_1);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const cLoKey = comparer.Compare(lo, MapTreeLeaf$2__get_Key(mn)) | 0;\n const cKeyHi = comparer.Compare(MapTreeLeaf$2__get_Key(mn), hi) | 0;\n const x_2 = (cLoKey < 0) ? foldFromTo(f_1, MapTreeNode$2__get_Left(mn), x_1) : x_1;\n const x_3 = ((cLoKey <= 0) && (cKeyHi <= 0)) ? f_1(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), x_2) : x_2;\n if (cKeyHi < 0) {\n f_1_mut = f_1;\n m_1_mut = MapTreeNode$2__get_Right(mn);\n x_1_mut = x_3;\n continue foldFromTo;\n }\n else {\n return x_3;\n }\n }\n else if ((comparer.Compare(lo, MapTreeLeaf$2__get_Key(m2)) <= 0) && (comparer.Compare(MapTreeLeaf$2__get_Key(m2), hi) <= 0)) {\n return f_1(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), x_1);\n }\n else {\n return x_1;\n }\n }\n else {\n return x_1;\n }\n break;\n }\n };\n if (comparer.Compare(lo, hi) === 1) {\n return x;\n }\n else {\n return foldFromTo(f, m, x);\n }\n}\nexport function MapTreeModule_foldSection(comparer, lo, hi, f, m, x) {\n return MapTreeModule_foldSectionOpt(comparer, lo, hi, f, m, x);\n}\nexport function MapTreeModule_toList(m) {\n const loop = (m_1_mut, acc_mut) => {\n loop: while (true) {\n const m_1 = m_1_mut, acc = acc_mut;\n if (m_1 != null) {\n const m2 = value_1(m_1);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n m_1_mut = MapTreeNode$2__get_Left(mn);\n acc_mut = cons([MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn)], loop(MapTreeNode$2__get_Right(mn), acc));\n continue loop;\n }\n else {\n return cons([MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2)], acc);\n }\n }\n else {\n return acc;\n }\n break;\n }\n };\n return loop(m, empty_1());\n}\nexport function MapTreeModule_copyToArray(m, arr, i) {\n let j = i;\n MapTreeModule_iter((x, y) => {\n setItem(arr, j, [x, y]);\n j = ((j + 1) | 0);\n }, m);\n}\nexport function MapTreeModule_toArray(m) {\n const n = MapTreeModule_size(m) | 0;\n const res = fill(new Array(n), 0, n, [null, null]);\n MapTreeModule_copyToArray(m, res, 0);\n return res;\n}\nexport function MapTreeModule_ofList(comparer, l) {\n return fold_1((acc, tupledArg) => MapTreeModule_add(comparer, tupledArg[0], tupledArg[1], acc), MapTreeModule_empty(), l);\n}\nexport function MapTreeModule_mkFromEnumerator(comparer_mut, acc_mut, e_mut) {\n MapTreeModule_mkFromEnumerator: while (true) {\n const comparer = comparer_mut, acc = acc_mut, e = e_mut;\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const patternInput = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n comparer_mut = comparer;\n acc_mut = MapTreeModule_add(comparer, patternInput[0], patternInput[1], acc);\n e_mut = e;\n continue MapTreeModule_mkFromEnumerator;\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function MapTreeModule_ofArray(comparer, arr) {\n let res = MapTreeModule_empty();\n for (let idx = 0; idx <= (arr.length - 1); idx++) {\n const forLoopVar = item(idx, arr);\n res = MapTreeModule_add(comparer, forLoopVar[0], forLoopVar[1], res);\n }\n return res;\n}\nexport function MapTreeModule_ofSeq(comparer, c) {\n if (isArrayLike(c)) {\n return MapTreeModule_ofArray(comparer, c);\n }\n else if (c instanceof FSharpList) {\n return MapTreeModule_ofList(comparer, c);\n }\n else {\n const ie = getEnumerator(c);\n try {\n return MapTreeModule_mkFromEnumerator(comparer, MapTreeModule_empty(), ie);\n }\n finally {\n disposeSafe(ie);\n }\n }\n}\nexport class MapTreeModule_MapIterator$2 extends Record {\n constructor(stack, started) {\n super();\n this.stack = stack;\n this.started = started;\n }\n}\nexport function MapTreeModule_MapIterator$2_$reflection(gen0, gen1) {\n return record_type(\"Map.MapTreeModule.MapIterator`2\", [gen0, gen1], MapTreeModule_MapIterator$2, () => [[\"stack\", list_type(option_type(MapTreeLeaf$2_$reflection(gen0, gen1)))], [\"started\", bool_type]]);\n}\nexport function MapTreeModule_collapseLHS(stack_mut) {\n MapTreeModule_collapseLHS: while (true) {\n const stack = stack_mut;\n if (!isEmpty_1(stack)) {\n const rest = tail(stack);\n const m = head(stack);\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n stack_mut = ofArrayWithTail([MapTreeNode$2__get_Left(mn), MapTreeLeaf$2_$ctor_5BDDA1(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn)), MapTreeNode$2__get_Right(mn)], rest);\n continue MapTreeModule_collapseLHS;\n }\n else {\n return stack;\n }\n }\n else {\n stack_mut = rest;\n continue MapTreeModule_collapseLHS;\n }\n }\n else {\n return empty_1();\n }\n break;\n }\n}\nexport function MapTreeModule_mkIterator(m) {\n return new MapTreeModule_MapIterator$2(MapTreeModule_collapseLHS(singleton(m)), false);\n}\nexport function MapTreeModule_notStarted() {\n throw new Error(\"enumeration not started\");\n}\nexport function MapTreeModule_alreadyFinished() {\n throw new Error(\"enumeration already finished\");\n}\nexport function MapTreeModule_current(i) {\n if (i.started) {\n const matchValue = i.stack;\n if (!isEmpty_1(matchValue)) {\n if (head(matchValue) != null) {\n const m = value_1(head(matchValue));\n if (m instanceof MapTreeNode$2) {\n throw new Error(\"Please report error: Map iterator, unexpected stack for current\");\n }\n else {\n return [MapTreeLeaf$2__get_Key(m), MapTreeLeaf$2__get_Value(m)];\n }\n }\n else {\n throw new Error(\"Please report error: Map iterator, unexpected stack for current\");\n }\n }\n else {\n return MapTreeModule_alreadyFinished();\n }\n }\n else {\n return MapTreeModule_notStarted();\n }\n}\nexport function MapTreeModule_moveNext(i) {\n if (i.started) {\n const matchValue = i.stack;\n if (!isEmpty_1(matchValue)) {\n if (head(matchValue) != null) {\n const m = value_1(head(matchValue));\n if (m instanceof MapTreeNode$2) {\n throw new Error(\"Please report error: Map iterator, unexpected stack for moveNext\");\n }\n else {\n i.stack = MapTreeModule_collapseLHS(tail(matchValue));\n return !isEmpty_1(i.stack);\n }\n }\n else {\n throw new Error(\"Please report error: Map iterator, unexpected stack for moveNext\");\n }\n }\n else {\n return false;\n }\n }\n else {\n i.started = true;\n return !isEmpty_1(i.stack);\n }\n}\nexport function MapTreeModule_mkIEnumerator(m) {\n let i = MapTreeModule_mkIterator(m);\n return {\n \"System.Collections.Generic.IEnumerator`1.get_Current\"() {\n return MapTreeModule_current(i);\n },\n \"System.Collections.IEnumerator.get_Current\"() {\n return MapTreeModule_current(i);\n },\n \"System.Collections.IEnumerator.MoveNext\"() {\n return MapTreeModule_moveNext(i);\n },\n \"System.Collections.IEnumerator.Reset\"() {\n i = MapTreeModule_mkIterator(m);\n },\n Dispose() {\n },\n };\n}\nexport function MapTreeModule_toSeq(s) {\n return unfold((en_1) => {\n if (en_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return [en_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), en_1];\n }\n else {\n return undefined;\n }\n }, MapTreeModule_mkIEnumerator(s));\n}\nexport function MapTreeModule_leftmost(m_mut) {\n MapTreeModule_leftmost: while (true) {\n const m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n let matchResult, nd_1;\n if (m2 instanceof MapTreeNode$2) {\n if (MapTreeNode$2__get_Height(m2) > 1) {\n matchResult = 0;\n nd_1 = m2;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n if (MapTreeNode$2__get_Left(nd_1) == null) {\n return [MapTreeLeaf$2__get_Key(nd_1), MapTreeLeaf$2__get_Value(nd_1)];\n }\n else {\n m_mut = MapTreeNode$2__get_Left(nd_1);\n continue MapTreeModule_leftmost;\n }\n default:\n return [MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2)];\n }\n }\n else {\n throw new Error();\n }\n break;\n }\n}\nexport function MapTreeModule_rightmost(m_mut) {\n MapTreeModule_rightmost: while (true) {\n const m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n let matchResult, nd_1;\n if (m2 instanceof MapTreeNode$2) {\n if (MapTreeNode$2__get_Height(m2) > 1) {\n matchResult = 0;\n nd_1 = m2;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n if (MapTreeNode$2__get_Right(nd_1) == null) {\n return [MapTreeLeaf$2__get_Key(nd_1), MapTreeLeaf$2__get_Value(nd_1)];\n }\n else {\n m_mut = MapTreeNode$2__get_Right(nd_1);\n continue MapTreeModule_rightmost;\n }\n default:\n return [MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2)];\n }\n }\n else {\n throw new Error();\n }\n break;\n }\n}\nexport class FSharpMap {\n constructor(comparer, tree) {\n this.comparer = comparer;\n this.tree = tree;\n }\n GetHashCode() {\n const this$ = this;\n return FSharpMap__ComputeHashCode(this$) | 0;\n }\n Equals(that) {\n const this$ = this;\n if (that instanceof FSharpMap) {\n const that_1 = that;\n const e1 = getEnumerator(this$);\n try {\n const e2 = getEnumerator(that_1);\n try {\n const loop = () => {\n const m1 = e1[\"System.Collections.IEnumerator.MoveNext\"]();\n if (m1 === e2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n if (!m1) {\n return true;\n }\n else {\n const e1c = e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n const e2c = e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n if (equals(e1c[0], e2c[0]) && equals(e1c[1], e2c[1])) {\n return loop();\n }\n else {\n return false;\n }\n }\n }\n else {\n return false;\n }\n };\n return loop();\n }\n finally {\n disposeSafe(e2);\n }\n }\n finally {\n disposeSafe(e1);\n }\n }\n else {\n return false;\n }\n }\n toString() {\n const this$ = this;\n return (\"map [\" + join(\"; \", map_1((kv) => format(\"({0}, {1})\", kv[0], kv[1]), this$))) + \"]\";\n }\n get [Symbol.toStringTag]() {\n return \"FSharpMap\";\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n GetEnumerator() {\n const _ = this;\n return MapTreeModule_mkIEnumerator(_.tree);\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const _ = this;\n return MapTreeModule_mkIEnumerator(_.tree);\n }\n CompareTo(obj) {\n const m = this;\n if (obj instanceof FSharpMap) {\n const m2 = obj;\n return compareWith((kvp1, kvp2) => {\n const c = m.comparer.Compare(kvp1[0], kvp2[0]) | 0;\n return ((c !== 0) ? c : compare(kvp1[1], kvp2[1])) | 0;\n }, m, m2) | 0;\n }\n else {\n throw new Error(\"not comparable\\\\nParameter name: obj\");\n }\n }\n \"System.Collections.Generic.ICollection`1.Add2B595\"(x) {\n throw new Error(\"Map cannot be mutated\");\n }\n \"System.Collections.Generic.ICollection`1.Clear\"() {\n throw new Error(\"Map cannot be mutated\");\n }\n \"System.Collections.Generic.ICollection`1.Remove2B595\"(x) {\n throw new Error(\"Map cannot be mutated\");\n }\n \"System.Collections.Generic.ICollection`1.Contains2B595\"(x) {\n const m = this;\n return FSharpMap__ContainsKey(m, x[0]) && equals(FSharpMap__get_Item(m, x[0]), x[1]);\n }\n \"System.Collections.Generic.ICollection`1.CopyToZ3B4C077E\"(arr, i) {\n const m = this;\n MapTreeModule_copyToArray(m.tree, arr, i);\n }\n \"System.Collections.Generic.ICollection`1.get_IsReadOnly\"() {\n return true;\n }\n \"System.Collections.Generic.ICollection`1.get_Count\"() {\n const m = this;\n return FSharpMap__get_Count(m) | 0;\n }\n \"System.Collections.Generic.IReadOnlyCollection`1.get_Count\"() {\n const m = this;\n return FSharpMap__get_Count(m) | 0;\n }\n get size() {\n const m = this;\n return FSharpMap__get_Count(m) | 0;\n }\n clear() {\n throw new Error(\"Map cannot be mutated\");\n }\n delete(_arg) {\n throw new Error(\"Map cannot be mutated\");\n return false;\n }\n entries() {\n const m = this;\n return map_1((p) => [p[0], p[1]], m);\n }\n get(k) {\n const m = this;\n return FSharpMap__get_Item(m, k);\n }\n has(k) {\n const m = this;\n return FSharpMap__ContainsKey(m, k);\n }\n keys() {\n const m = this;\n return map_1((p) => p[0], m);\n }\n set(k, v) {\n const m = this;\n throw new Error(\"Map cannot be mutated\");\n return m;\n }\n values() {\n const m = this;\n return map_1((p) => p[1], m);\n }\n forEach(f, thisArg) {\n const m = this;\n iterate_1((p) => {\n f(p[1], p[0], m);\n }, m);\n }\n}\nexport function FSharpMap_$reflection(gen0, gen1) {\n return class_type(\"Map.FSharpMap\", [gen0, gen1], FSharpMap);\n}\nexport function FSharpMap_$ctor(comparer, tree) {\n return new FSharpMap(comparer, tree);\n}\nexport function FSharpMap_Empty(comparer) {\n return FSharpMap_$ctor(comparer, MapTreeModule_empty());\n}\nexport function FSharpMap__get_Comparer(m) {\n return m.comparer;\n}\nexport function FSharpMap__get_Tree(m) {\n return m.tree;\n}\nexport function FSharpMap__Add(m, key, value) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_add(m.comparer, key, value, m.tree));\n}\nexport function FSharpMap__Change(m, key, f) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_change(m.comparer, key, f, m.tree));\n}\nexport function FSharpMap__get_IsEmpty(m) {\n return m.tree == null;\n}\nexport function FSharpMap__get_Item(m, key) {\n return MapTreeModule_find(m.comparer, key, m.tree);\n}\nexport function FSharpMap__TryPick(m, f) {\n return MapTreeModule_tryPick(f, m.tree);\n}\nexport function FSharpMap__Exists(m, predicate) {\n return MapTreeModule_exists(predicate, m.tree);\n}\nexport function FSharpMap__Filter(m, predicate) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_filter(m.comparer, predicate, m.tree));\n}\nexport function FSharpMap__ForAll(m, predicate) {\n return MapTreeModule_forall(predicate, m.tree);\n}\nexport function FSharpMap__Fold(m, f, acc) {\n return MapTreeModule_foldBack(f, m.tree, acc);\n}\nexport function FSharpMap__FoldSection(m, lo, hi, f, acc) {\n return MapTreeModule_foldSection(m.comparer, lo, hi, f, m.tree, acc);\n}\nexport function FSharpMap__Iterate(m, f) {\n MapTreeModule_iter(f, m.tree);\n}\nexport function FSharpMap__MapRange(m, f) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_map(f, m.tree));\n}\nexport function FSharpMap__Map(m, f) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_mapi(f, m.tree));\n}\nexport function FSharpMap__Partition(m, predicate) {\n const patternInput = MapTreeModule_partition(m.comparer, predicate, m.tree);\n return [FSharpMap_$ctor(m.comparer, patternInput[0]), FSharpMap_$ctor(m.comparer, patternInput[1])];\n}\nexport function FSharpMap__get_Count(m) {\n return MapTreeModule_size(m.tree);\n}\nexport function FSharpMap__ContainsKey(m, key) {\n return MapTreeModule_mem(m.comparer, key, m.tree);\n}\nexport function FSharpMap__Remove(m, key) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_remove(m.comparer, key, m.tree));\n}\nexport function FSharpMap__TryGetValue(_, key, value) {\n const matchValue = MapTreeModule_tryFind(_.comparer, key, _.tree);\n if (matchValue == null) {\n return false;\n }\n else {\n const v = value_1(matchValue);\n value.contents = v;\n return true;\n }\n}\nexport function FSharpMap__get_Keys(_) {\n return map_2((kvp) => kvp[0], MapTreeModule_toArray(_.tree));\n}\nexport function FSharpMap__get_Values(_) {\n return map_2((kvp) => kvp[1], MapTreeModule_toArray(_.tree));\n}\nexport function FSharpMap__get_MinKeyValue(m) {\n return MapTreeModule_leftmost(m.tree);\n}\nexport function FSharpMap__get_MaxKeyValue(m) {\n return MapTreeModule_rightmost(m.tree);\n}\nexport function FSharpMap__TryFind(m, key) {\n return MapTreeModule_tryFind(m.comparer, key, m.tree);\n}\nexport function FSharpMap__ToList(m) {\n return MapTreeModule_toList(m.tree);\n}\nexport function FSharpMap__ToArray(m) {\n return MapTreeModule_toArray(m.tree);\n}\nexport function FSharpMap__ComputeHashCode(this$) {\n const combineHash = (x, y) => (((x << 1) + y) + 631);\n let res = 0;\n const enumerator = getEnumerator(this$);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const activePatternResult = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n res = (combineHash(res, structuralHash(activePatternResult[0])) | 0);\n res = (combineHash(res, structuralHash(activePatternResult[1])) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return res | 0;\n}\nexport function isEmpty(table) {\n return FSharpMap__get_IsEmpty(table);\n}\nexport function add(key, value, table) {\n return FSharpMap__Add(table, key, value);\n}\nexport function change(key, f, table) {\n return FSharpMap__Change(table, key, f);\n}\nexport function find(key, table) {\n return FSharpMap__get_Item(table, key);\n}\nexport function tryFind(key, table) {\n return FSharpMap__TryFind(table, key);\n}\nexport function remove(key, table) {\n return FSharpMap__Remove(table, key);\n}\nexport function containsKey(key, table) {\n return FSharpMap__ContainsKey(table, key);\n}\nexport function iterate(action, table) {\n FSharpMap__Iterate(table, action);\n}\nexport function tryPick(chooser, table) {\n return FSharpMap__TryPick(table, chooser);\n}\nexport function pick(chooser, table) {\n const matchValue = tryPick(chooser, table);\n if (matchValue != null) {\n return value_1(matchValue);\n }\n else {\n throw new Error();\n }\n}\nexport function exists(predicate, table) {\n return FSharpMap__Exists(table, predicate);\n}\nexport function filter(predicate, table) {\n return FSharpMap__Filter(table, predicate);\n}\nexport function partition(predicate, table) {\n return FSharpMap__Partition(table, predicate);\n}\nexport function forAll(predicate, table) {\n return FSharpMap__ForAll(table, predicate);\n}\nexport function map(mapping, table) {\n return FSharpMap__Map(table, mapping);\n}\nexport function fold(folder, state, table) {\n return MapTreeModule_fold(folder, state, FSharpMap__get_Tree(table));\n}\nexport function foldBack(folder, table, state) {\n return MapTreeModule_foldBack(folder, FSharpMap__get_Tree(table), state);\n}\nexport function toSeq(table) {\n return map_1((kvp) => [kvp[0], kvp[1]], table);\n}\nexport function findKey(predicate, table) {\n return pick_1((kvp) => {\n const k = kvp[0];\n if (predicate(k, kvp[1])) {\n return some(k);\n }\n else {\n return undefined;\n }\n }, table);\n}\nexport function tryFindKey(predicate, table) {\n return tryPick_1((kvp) => {\n const k = kvp[0];\n if (predicate(k, kvp[1])) {\n return some(k);\n }\n else {\n return undefined;\n }\n }, table);\n}\nexport function ofList(elements, comparer) {\n return FSharpMap_$ctor(comparer, MapTreeModule_ofSeq(comparer, elements));\n}\nexport function ofSeq(elements, comparer) {\n return FSharpMap_$ctor(comparer, MapTreeModule_ofSeq(comparer, elements));\n}\nexport function ofArray(elements, comparer) {\n return FSharpMap_$ctor(comparer, MapTreeModule_ofSeq(comparer, elements));\n}\nexport function toList(table) {\n return FSharpMap__ToList(table);\n}\nexport function toArray(table) {\n return FSharpMap__ToArray(table);\n}\nexport function keys(table) {\n return FSharpMap__get_Keys(table);\n}\nexport function values(table) {\n return FSharpMap__get_Values(table);\n}\nexport function minKeyValue(table) {\n return FSharpMap__get_MinKeyValue(table);\n}\nexport function maxKeyValue(table) {\n return FSharpMap__get_MaxKeyValue(table);\n}\nexport function empty(comparer) {\n return FSharpMap_Empty(comparer);\n}\nexport function count(table) {\n return FSharpMap__get_Count(table);\n}\n","import { Record, Union } from \"./Types.js\";\nimport { combineHashCodes, equalArraysWith, stringHash } from \"./Util.js\";\nimport Decimal from \"./Decimal.js\";\nexport class CaseInfo {\n constructor(declaringType, tag, name, fields) {\n this.declaringType = declaringType;\n this.tag = tag;\n this.name = name;\n this.fields = fields;\n }\n}\nexport class MethodInfo {\n constructor(name, parameters, returnType) {\n this.name = name;\n this.parameters = parameters;\n this.returnType = returnType;\n }\n}\nexport class TypeInfo {\n constructor(fullname, generics, construct, parent, fields, cases, enumCases) {\n this.fullname = fullname;\n this.generics = generics;\n this.construct = construct;\n this.parent = parent;\n this.fields = fields;\n this.cases = cases;\n this.enumCases = enumCases;\n }\n toString() {\n return fullName(this);\n }\n GetHashCode() {\n return getHashCode(this);\n }\n Equals(other) {\n return equals(this, other);\n }\n}\nexport class GenericParameter extends TypeInfo {\n constructor(name) {\n super(name);\n }\n}\nexport function getGenerics(t) {\n return t.generics != null ? t.generics : [];\n}\nexport function getHashCode(t) {\n const fullnameHash = stringHash(t.fullname);\n const genHashes = getGenerics(t).map(getHashCode);\n return combineHashCodes([fullnameHash, ...genHashes]);\n}\nexport function equals(t1, t2) {\n if (t1.fullname === \"\") { // Anonymous records\n return t2.fullname === \"\"\n && equalArraysWith(getRecordElements(t1), getRecordElements(t2), ([k1, v1], [k2, v2]) => k1 === k2 && equals(v1, v2));\n }\n else {\n return t1.fullname === t2.fullname\n && equalArraysWith(getGenerics(t1), getGenerics(t2), equals);\n }\n}\nexport function class_type(fullname, generics, construct, parent) {\n return new TypeInfo(fullname, generics, construct, parent);\n}\nexport function record_type(fullname, generics, construct, fields) {\n return new TypeInfo(fullname, generics, construct, undefined, fields);\n}\nexport function anonRecord_type(...fields) {\n return new TypeInfo(\"\", undefined, undefined, undefined, () => fields);\n}\nexport function union_type(fullname, generics, construct, cases) {\n const t = new TypeInfo(fullname, generics, construct, undefined, undefined, () => {\n const caseNames = construct.prototype.cases();\n return cases().map((fields, i) => new CaseInfo(t, i, caseNames[i], fields));\n });\n return t;\n}\nexport function tuple_type(...generics) {\n return new TypeInfo(\"System.Tuple`\" + generics.length, generics);\n}\nexport function delegate_type(...generics) {\n return new TypeInfo(\"System.Func`\" + generics.length, generics);\n}\nexport function lambda_type(argType, returnType) {\n return new TypeInfo(\"Microsoft.FSharp.Core.FSharpFunc`2\", [argType, returnType]);\n}\nexport function option_type(generic) {\n return new TypeInfo(\"Microsoft.FSharp.Core.FSharpOption`1\", [generic]);\n}\nexport function list_type(generic) {\n return new TypeInfo(\"Microsoft.FSharp.Collections.FSharpList`1\", [generic]);\n}\nexport function array_type(generic) {\n return new TypeInfo(\"[]\", [generic]);\n}\nexport function enum_type(fullname, underlyingType, enumCases) {\n return new TypeInfo(fullname, [underlyingType], undefined, undefined, undefined, undefined, enumCases);\n}\nexport function measure_type(fullname) {\n return new TypeInfo(fullname);\n}\nexport function generic_type(name) {\n return new GenericParameter(name);\n}\nexport const obj_type = new TypeInfo(\"System.Object\");\nexport const unit_type = new TypeInfo(\"Microsoft.FSharp.Core.Unit\");\nexport const char_type = new TypeInfo(\"System.Char\");\nexport const string_type = new TypeInfo(\"System.String\");\nexport const bool_type = new TypeInfo(\"System.Boolean\");\nexport const int8_type = new TypeInfo(\"System.SByte\");\nexport const uint8_type = new TypeInfo(\"System.Byte\");\nexport const int16_type = new TypeInfo(\"System.Int16\");\nexport const uint16_type = new TypeInfo(\"System.UInt16\");\nexport const int32_type = new TypeInfo(\"System.Int32\");\nexport const uint32_type = new TypeInfo(\"System.UInt32\");\nexport const int64_type = new TypeInfo(\"System.Int64\");\nexport const uint64_type = new TypeInfo(\"System.UInt64\");\nexport const int128_type = new TypeInfo(\"System.Int128\");\nexport const uint128_type = new TypeInfo(\"System.UInt128\");\nexport const nativeint_type = new TypeInfo(\"System.IntPtr\");\nexport const unativeint_type = new TypeInfo(\"System.UIntPtr\");\nexport const float16_type = new TypeInfo(\"System.Half\");\nexport const float32_type = new TypeInfo(\"System.Single\");\nexport const float64_type = new TypeInfo(\"System.Double\");\nexport const decimal_type = new TypeInfo(\"System.Decimal\");\nexport const bigint_type = new TypeInfo(\"System.Numerics.BigInteger\");\nexport function name(info) {\n if (Array.isArray(info)) {\n return info[0];\n }\n else if (info instanceof TypeInfo) {\n const elemType = getElementType(info);\n if (elemType != null) {\n return name(elemType) + \"[]\";\n }\n else {\n const i = info.fullname.lastIndexOf(\".\");\n return i === -1 ? info.fullname : info.fullname.substr(i + 1);\n }\n }\n else {\n return info.name;\n }\n}\nexport function fullName(t) {\n const elemType = getElementType(t);\n if (elemType != null) {\n return fullName(elemType) + \"[]\";\n }\n else if (t.generics == null || t.generics.length === 0) {\n return t.fullname;\n }\n else {\n return t.fullname + \"[\" + t.generics.map((x) => fullName(x)).join(\",\") + \"]\";\n }\n}\nexport function namespace(t) {\n const elemType = getElementType(t);\n if (elemType != null) {\n return namespace(elemType);\n }\n else {\n const i = t.fullname.lastIndexOf(\".\");\n return i === -1 ? \"\" : t.fullname.substr(0, i);\n }\n}\nexport function isArray(t) {\n return getElementType(t) != null;\n}\nexport function getElementType(t) {\n return t.fullname === \"[]\" && t.generics?.length === 1 ? t.generics[0] : undefined;\n}\nexport function isGenericType(t) {\n return t.generics != null && t.generics.length > 0;\n}\nexport function isGenericParameter(t) {\n return t instanceof GenericParameter;\n}\nexport function isEnum(t) {\n return t.enumCases != null && t.enumCases.length > 0;\n}\nexport function isSubclassOf(t1, t2) {\n return (t2.fullname === obj_type.fullname) || (t1.parent != null && (t1.parent.Equals(t2) || isSubclassOf(t1.parent, t2)));\n}\nfunction isErasedToNumber(t) {\n return isEnum(t) || [\n int8_type.fullname,\n uint8_type.fullname,\n int16_type.fullname,\n uint16_type.fullname,\n int32_type.fullname,\n uint32_type.fullname,\n float16_type.fullname,\n float32_type.fullname,\n float64_type.fullname,\n ].includes(t.fullname);\n}\nfunction isErasedToBigInt(t) {\n return isEnum(t) || [\n int64_type.fullname,\n uint64_type.fullname,\n int128_type.fullname,\n uint128_type.fullname,\n nativeint_type.fullname,\n unativeint_type.fullname,\n bigint_type.fullname,\n ].includes(t.fullname);\n}\nexport function isInstanceOfType(t, o) {\n if (t.fullname === obj_type.fullname)\n return true;\n switch (typeof o) {\n case \"boolean\":\n return t.fullname === bool_type.fullname;\n case \"string\":\n return t.fullname === string_type.fullname;\n case \"function\":\n return isFunction(t);\n case \"number\":\n return isErasedToNumber(t);\n case \"bigint\":\n return isErasedToBigInt(t);\n default:\n return t.construct != null && o instanceof t.construct;\n }\n}\n/**\n * This doesn't replace types for fields (records) or cases (unions)\n * but it should be enough for type comparison purposes\n */\nexport function getGenericTypeDefinition(t) {\n return t.generics == null ? t : new TypeInfo(t.fullname, t.generics.map(() => obj_type));\n}\nexport function getEnumUnderlyingType(t) {\n return t.generics?.[0];\n}\nexport function getEnumValues(t) {\n if (isEnum(t) && t.enumCases != null) {\n return t.enumCases.map((kv) => kv[1]);\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nexport function getEnumNames(t) {\n if (isEnum(t) && t.enumCases != null) {\n return t.enumCases.map((kv) => kv[0]);\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nfunction getEnumCase(t, v) {\n if (t.enumCases != null) {\n if (typeof v === \"string\") {\n for (const kv of t.enumCases) {\n if (kv[0] === v) {\n return kv;\n }\n }\n throw new Error(`'${v}' was not found in ${t.fullname}`);\n }\n else {\n for (const kv of t.enumCases) {\n if (kv[1] === v) {\n return kv;\n }\n }\n // .NET returns the number even if it doesn't match any of the cases\n return [\"\", v];\n }\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nexport function parseEnum(t, str) {\n // TODO: better int parsing here, parseInt ceils floats: \"4.8\" -> 4\n const value = parseInt(str, 10);\n return getEnumCase(t, isNaN(value) ? str : value)[1];\n}\nexport function tryParseEnum(t, str, defValue) {\n try {\n defValue.contents = parseEnum(t, str);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function getEnumName(t, v) {\n return getEnumCase(t, v)[0];\n}\nexport function isEnumDefined(t, v) {\n try {\n const kv = getEnumCase(t, v);\n return kv[0] != null && kv[0] !== \"\";\n }\n catch {\n // supress error\n }\n return false;\n}\n// FSharpType\nexport function getUnionCases(t) {\n if (t.cases != null) {\n return t.cases();\n }\n else {\n throw new Error(`${t.fullname} is not an F# union type`);\n }\n}\nexport function getRecordElements(t) {\n if (t.fields != null) {\n return t.fields();\n }\n else {\n throw new Error(`${t.fullname} is not an F# record type`);\n }\n}\nexport function getTupleElements(t) {\n if (isTuple(t) && t.generics != null) {\n return t.generics;\n }\n else {\n throw new Error(`${t.fullname} is not a tuple type`);\n }\n}\nexport function getFunctionElements(t) {\n if (isFunction(t) && t.generics != null) {\n const gen = t.generics;\n return [gen[0], gen[1]];\n }\n else {\n throw new Error(`${t.fullname} is not an F# function type`);\n }\n}\nexport function isUnion(t) {\n return t instanceof TypeInfo ? t.cases != null : t instanceof Union;\n}\nexport function isRecord(t) {\n return t instanceof TypeInfo ? t.fields != null : t instanceof Record;\n}\nexport function isTuple(t) {\n return t.fullname.startsWith(\"System.Tuple\");\n}\n// In .NET this is false for delegates\nexport function isFunction(t) {\n return t.fullname === \"Microsoft.FSharp.Core.FSharpFunc`2\";\n}\n// FSharpValue\nexport function getUnionFields(v, t) {\n const cases = getUnionCases(t);\n const case_ = cases[v.tag];\n if (case_ == null) {\n throw new Error(`Cannot find case ${v.name} in union type`);\n }\n return [case_, v.fields];\n}\nexport function getUnionCaseFields(uci) {\n return uci.fields == null ? [] : uci.fields;\n}\n// This is used as replacement of `FSharpValue.GetRecordFields`\n// For `FSharpTypes.GetRecordFields` see `getRecordElements`\n// Object.keys returns keys in the order they were added to the object\nexport function getRecordFields(v) {\n return Object.keys(v).map((k) => v[k]);\n}\nexport function getRecordField(v, field) {\n return v[field[0]];\n}\nexport function getTupleFields(v) {\n return v;\n}\nexport function getTupleField(v, i) {\n return v[i];\n}\nexport function makeUnion(uci, values) {\n const expectedLength = (uci.fields || []).length;\n if (values.length !== expectedLength) {\n throw new Error(`Expected an array of length ${expectedLength} but got ${values.length}`);\n }\n const construct = uci.declaringType.construct;\n if (construct == null) {\n return {};\n }\n const isSingleCase = uci.declaringType.cases ? uci.declaringType.cases().length == 1 : false;\n if (isSingleCase) {\n return new construct(...values);\n }\n else {\n return new construct(uci.tag, values);\n }\n}\nexport function makeRecord(t, values) {\n const fields = getRecordElements(t);\n if (fields.length !== values.length) {\n throw new Error(`Expected an array of length ${fields.length} but got ${values.length}`);\n }\n return t.construct != null\n ? new t.construct(...values)\n : fields.reduce((obj, [key, _t], i) => {\n obj[key] = values[i];\n return obj;\n }, {});\n}\nexport function makeTuple(values, _t) {\n return values;\n}\nexport function makeGenericType(t, generics) {\n return new TypeInfo(t.fullname, generics, t.construct, t.parent, t.fields, t.cases);\n}\nexport function createInstance(t, consArgs) {\n // TODO: Check if consArgs length is same as t.construct?\n // (Arg types can still be different)\n if (typeof t.construct === \"function\") {\n return new t.construct(...(consArgs ?? []));\n }\n else if (isErasedToNumber(t)) {\n return 0;\n }\n else if (isErasedToBigInt(t)) {\n return 0n;\n }\n else {\n switch (t.fullname) {\n case obj_type.fullname:\n return {};\n case bool_type.fullname:\n return false;\n case decimal_type.fullname:\n return new Decimal(0);\n case char_type.fullname:\n // Even though char is a value type, it's erased to string, and Unchecked.defaultof is null\n return null;\n default:\n throw new Error(`Cannot access constructor of ${t.fullname}`);\n }\n }\n}\nexport function getValue(propertyInfo, v) {\n return v[propertyInfo[0]];\n}\n// Fable.Core.Reflection\nfunction assertUnion(x) {\n if (!(x instanceof Union)) {\n throw new Error(`Value is not an F# union type`);\n }\n}\nexport function getCaseTag(x) {\n assertUnion(x);\n return x.tag;\n}\nexport function getCaseName(x) {\n assertUnion(x);\n return x.cases()[x.tag];\n}\nexport function getCaseFields(x) {\n assertUnion(x);\n return x.fields;\n}\n","import { Union } from \"../fable-library-js.4.19.3/Types.js\";\nimport { union_type, class_type, list_type, bool_type, string_type, float64_type } from \"../fable-library-js.4.19.3/Reflection.js\";\n\nexport class Json extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"JNumber\", \"JString\", \"JBool\", \"JNull\", \"JArray\", \"JObject\"];\n }\n}\n\nexport function Json_$reflection() {\n return union_type(\"Fable.SimpleJson.Json\", [], Json, () => [[[\"Item\", float64_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [], [[\"Item\", list_type(Json_$reflection())]], [[\"Item\", class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [string_type, Json_$reflection()])]]]);\n}\n\n","const ok = (value) => ({\n tag: \"ok\",\n value,\n});\nconst error = (error) => ({ tag: \"error\", error });\nexport class Uri {\n constructor(state) {\n this.uri = state;\n }\n static isAbsoluteUri(uri) {\n try {\n // tslint:disable-next-line no-unused-expression\n new URL(uri);\n return true;\n }\n catch {\n return false;\n }\n }\n static tryCreateWithKind(uri, kind) {\n switch (kind) {\n case 1 /* UriKind.Absolute */:\n return Uri.isAbsoluteUri(uri)\n ? ok(new Uri({ original: uri, value: new URL(uri), kind }))\n : error(\"Invalid URI: The format of the URI could not be determined.\");\n case 2 /* UriKind.Relative */:\n return Uri.isAbsoluteUri(uri)\n ? error(\"URI is not a relative path.\")\n : ok(new Uri({ original: uri, value: uri, kind }));\n case 0 /* UriKind.RelativeOrAbsolute */:\n return Uri.isAbsoluteUri(uri)\n ? ok(new Uri({ original: uri, value: new URL(uri), kind: 1 /* UriKind.Absolute */ }))\n : ok(new Uri({ original: uri, value: uri, kind: 2 /* UriKind.Relative */ }));\n default:\n const never = kind;\n return never;\n }\n }\n static tryCreateWithBase(baseUri, relativeUri) {\n return baseUri.uri.kind !== 1 /* UriKind.Absolute */\n ? error(\"Base URI should have Absolute kind\")\n : typeof relativeUri === \"string\"\n ? ok(new Uri({\n original: new URL(relativeUri, baseUri.uri.value).toString(),\n value: new URL(relativeUri, baseUri.uri.value),\n kind: 1 /* UriKind.Absolute */,\n }))\n : relativeUri.uri.kind === 2 /* UriKind.Relative */\n ? ok(new Uri({\n original: new URL(relativeUri.uri.value, baseUri.uri.value).toString(),\n value: new URL(relativeUri.uri.value, baseUri.uri.value),\n kind: 1 /* UriKind.Absolute */,\n }))\n : ok(baseUri);\n }\n static tryCreateImpl(value, kindOrUri = 1 /* UriKind.Absolute */) {\n return typeof value === \"string\"\n ? typeof kindOrUri !== \"number\"\n ? error(\"Kind must be specified when the baseUri is a string.\")\n : Uri.tryCreateWithKind(value, kindOrUri)\n : typeof kindOrUri === \"number\"\n ? error(\"Kind should not be specified when the baseUri is an absolute Uri.\")\n : Uri.tryCreateWithBase(value, kindOrUri);\n }\n static create(value, kindOrUri = 1 /* UriKind.Absolute */) {\n const result = Uri.tryCreateImpl(value, kindOrUri);\n switch (result.tag) {\n case \"ok\":\n return result.value;\n case \"error\":\n throw new Error(result.error);\n default:\n const never = result;\n return never;\n }\n }\n static tryCreate(value, kindOrUri = 1 /* UriKind.Absolute */, out) {\n const result = Uri.tryCreateImpl(value, kindOrUri);\n switch (result.tag) {\n case \"ok\":\n out.contents = result.value;\n return true;\n case \"error\":\n return false;\n default:\n const never = result;\n return never;\n }\n }\n toString() {\n switch (this.uri.kind) {\n case 1 /* UriKind.Absolute */:\n return decodeURIComponent(this.asUrl().toString());\n case 2 /* UriKind.Relative */:\n return this.uri.value;\n default:\n const never = this.uri;\n return never;\n }\n }\n asUrl() {\n switch (this.uri.kind) {\n case 1 /* UriKind.Absolute */:\n return this.uri.value;\n case 2 /* UriKind.Relative */:\n throw new Error(\"This operation is not supported for a relative URI.\");\n default:\n const never = this.uri;\n return never;\n }\n }\n get isAbsoluteUri() {\n return this.uri.kind === 1 /* UriKind.Absolute */;\n }\n get absoluteUri() {\n return this.asUrl().href;\n }\n get scheme() {\n const protocol = this.asUrl().protocol;\n return protocol.slice(0, protocol.length - 1);\n }\n get host() {\n return this.asUrl().host;\n }\n get absolutePath() {\n return this.asUrl().pathname;\n }\n get query() {\n return this.asUrl().search;\n }\n get pathAndQuery() {\n const url = this.asUrl();\n return url.pathname + url.search;\n }\n get fragment() {\n return this.asUrl().hash;\n }\n get originalString() {\n return this.uri.original;\n }\n}\nexport default Uri;\n","import { getPrefix, isValid } from \"./Int32.js\";\nimport { fromString } from \"./BigInt.js\";\nfunction getMaxValue(unsigned, radix, isNegative) {\n switch (radix) {\n case 2: return unsigned ?\n \"1111111111111111111111111111111111111111111111111111111111111111\" :\n (isNegative ? \"1000000000000000000000000000000000000000000000000000000000000000\"\n : \"111111111111111111111111111111111111111111111111111111111111111\");\n case 8: return unsigned ?\n \"1777777777777777777777\" :\n (isNegative ? \"1000000000000000000000\" : \"777777777777777777777\");\n case 10: return unsigned ?\n \"18446744073709551615\" :\n (isNegative ? \"9223372036854775808\" : \"9223372036854775807\");\n case 16: return unsigned ?\n \"FFFFFFFFFFFFFFFF\" :\n (isNegative ? \"8000000000000000\" : \"7FFFFFFFFFFFFFFF\");\n default: throw new Error(\"Invalid radix.\");\n }\n}\nexport function parse(str, style, unsigned, _bitsize, radix) {\n const res = isValid(str, style, radix);\n if (res != null) {\n const lessOrEqual = (x, y) => {\n const len = Math.max(x.length, y.length);\n return x.padStart(len, \"0\") <= y.padStart(len, \"0\");\n };\n const isNegative = res.sign === \"-\";\n const maxValue = getMaxValue(unsigned || res.radix !== 10, res.radix, isNegative);\n if (lessOrEqual(res.digits.toUpperCase(), maxValue)) {\n str = getPrefix(res.radix) + res.digits;\n str = isNegative ? res.sign + str : str;\n return fromString(str);\n }\n }\n throw new Error(`The input string ${str} was not in a correct format.`);\n}\nexport function tryParse(str, style, unsigned, bitsize, defValue) {\n try {\n defValue.contents = parse(str, style, unsigned, bitsize);\n return true;\n }\n catch {\n return false;\n }\n}\n","\"use strict\";\r\n\r\nexport function Parsimmon(action) {\r\n if (!(this instanceof Parsimmon)) {\r\n return new Parsimmon(action);\r\n }\r\n this._ = action;\r\n}\r\n\r\nvar _ = Parsimmon.prototype;\r\n\r\nexport function times(n, f) {\r\n var i = 0;\r\n for (i; i < n; i++) {\r\n f(i);\r\n }\r\n}\r\n\r\nexport function forEach(f, arr) {\r\n times(arr.length, function(i) {\r\n f(arr[i], i, arr);\r\n });\r\n}\r\n\r\nexport function reduce(f, seed, arr) {\r\n forEach(function(elem, i, arr) {\r\n seed = f(seed, elem, i, arr);\r\n }, arr);\r\n return seed;\r\n}\r\n\r\nexport function map(f, arr) {\r\n return reduce(\r\n function(acc, elem, i, a) {\r\n return acc.concat([f(elem, i, a)]);\r\n },\r\n [],\r\n arr\r\n );\r\n}\r\n\r\nexport function lshiftBuffer(input) {\r\n var asTwoBytes = reduce(\r\n function(a, v, i, b) {\r\n return a.concat(\r\n i === b.length - 1\r\n ? Buffer.from([v, 0]).readUInt16BE(0)\r\n : b.readUInt16BE(i)\r\n );\r\n },\r\n [],\r\n input\r\n );\r\n return Buffer.from(\r\n map(function(x) {\r\n return ((x << 1) & 0xffff) >> 8;\r\n }, asTwoBytes)\r\n );\r\n}\r\n\r\nfunction consumeBitsFromBuffer(n, input) {\r\n var state = { v: 0, buf: input };\r\n times(n, function() {\r\n state = {\r\n v: (state.v << 1) | bitPeekBuffer(state.buf),\r\n buf: lshiftBuffer(state.buf)\r\n };\r\n });\r\n return state;\r\n}\r\n\r\nfunction bitPeekBuffer(input) {\r\n return input[0] >> 7;\r\n}\r\n\r\nexport function sum(numArr) {\r\n return reduce(\r\n function(x, y) {\r\n return x + y;\r\n },\r\n 0,\r\n numArr\r\n );\r\n}\r\n\r\nexport function find(pred, arr) {\r\n return reduce(\r\n function(found, elem) {\r\n return found || (pred(elem) ? elem : found);\r\n },\r\n null,\r\n arr\r\n );\r\n}\r\n\r\nfunction bufferExists() {\r\n return typeof Buffer !== \"undefined\";\r\n}\r\n\r\nfunction ensureBuffer() {\r\n if (!bufferExists()) {\r\n throw new Error(\r\n \"Buffer global does not exist; please consider using https://github.com/feross/buffer if you are running Parsimmon in a browser.\"\r\n );\r\n }\r\n}\r\n\r\nfunction bitSeq(alignments) {\r\n ensureBuffer();\r\n var totalBits = sum(alignments);\r\n if (totalBits % 8 !== 0) {\r\n throw new Error(\r\n \"The bits [\" +\r\n alignments.join(\", \") +\r\n \"] add up to \" +\r\n totalBits +\r\n \" which is not an even number of bytes; the total should be divisible by 8\"\r\n );\r\n }\r\n var bytes = totalBits / 8;\r\n\r\n var tooBigRange = find(function(x) {\r\n return x > 48;\r\n }, alignments);\r\n if (tooBigRange) {\r\n throw new Error(\r\n tooBigRange + \" bit range requested exceeds 48 bit (6 byte) Number max.\"\r\n );\r\n }\r\n\r\n return new Parsimmon(function(input, i) {\r\n var newPos = bytes + i;\r\n if (newPos > input.length) {\r\n return makeFailure(i, bytes.toString() + \" bytes\");\r\n }\r\n return makeSuccess(\r\n newPos,\r\n reduce(\r\n function(acc, bits) {\r\n var state = consumeBitsFromBuffer(bits, acc.buf);\r\n return {\r\n coll: acc.coll.concat(state.v),\r\n buf: state.buf\r\n };\r\n },\r\n { coll: [], buf: input.slice(i, newPos) },\r\n alignments\r\n ).coll\r\n );\r\n });\r\n}\r\n\r\nfunction bitSeqObj(namedAlignments) {\r\n ensureBuffer();\r\n var seenKeys = {};\r\n var totalKeys = 0;\r\n var fullAlignments = map(function(item) {\r\n if (isArray(item)) {\r\n var pair = item;\r\n if (pair.length !== 2) {\r\n throw new Error(\r\n \"[\" +\r\n pair.join(\", \") +\r\n \"] should be length 2, got length \" +\r\n pair.length\r\n );\r\n }\r\n assertString(pair[0]);\r\n assertNumber(pair[1]);\r\n if (Object.prototype.hasOwnProperty.call(seenKeys, pair[0])) {\r\n throw new Error(\"duplicate key in bitSeqObj: \" + pair[0]);\r\n }\r\n seenKeys[pair[0]] = true;\r\n totalKeys++;\r\n return pair;\r\n } else {\r\n assertNumber(item);\r\n return [null, item];\r\n }\r\n }, namedAlignments);\r\n if (totalKeys < 1) {\r\n throw new Error(\r\n \"bitSeqObj expects at least one named pair, got [\" +\r\n namedAlignments.join(\", \") +\r\n \"]\"\r\n );\r\n }\r\n var namesOnly = map(function(pair) {\r\n return pair[0];\r\n }, fullAlignments);\r\n var alignmentsOnly = map(function(pair) {\r\n return pair[1];\r\n }, fullAlignments);\r\n\r\n return bitSeq(alignmentsOnly).map(function(parsed) {\r\n var namedParsed = map(function(name, i) {\r\n return [name, parsed[i]];\r\n }, namesOnly);\r\n\r\n return reduce(\r\n function(obj, kv) {\r\n if (kv[0] !== null) {\r\n obj[kv[0]] = kv[1];\r\n }\r\n return obj;\r\n },\r\n {},\r\n namedParsed\r\n );\r\n });\r\n}\r\n\r\nfunction parseBufferFor(other, length) {\r\n ensureBuffer();\r\n return new Parsimmon(function(input, i) {\r\n if (i + length > input.length) {\r\n return makeFailure(i, length + \" bytes for \" + other);\r\n }\r\n return makeSuccess(i + length, input.slice(i, i + length));\r\n });\r\n}\r\n\r\nfunction parseBuffer(length) {\r\n return parseBufferFor(\"buffer\", length).map(function(unsafe) {\r\n return Buffer.from(unsafe);\r\n });\r\n}\r\n\r\nfunction encodedString(encoding, length) {\r\n return parseBufferFor(\"string\", length).map(function(buff) {\r\n return buff.toString(encoding);\r\n });\r\n}\r\n\r\nfunction isInteger(value) {\r\n return typeof value === \"number\" && Math.floor(value) === value;\r\n}\r\n\r\nfunction assertValidIntegerByteLengthFor(who, length) {\r\n if (!isInteger(length) || length < 0 || length > 6) {\r\n throw new Error(who + \" requires integer length in range [0, 6].\");\r\n }\r\n}\r\n\r\nfunction uintBE(length) {\r\n assertValidIntegerByteLengthFor(\"uintBE\", length);\r\n return parseBufferFor(\"uintBE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readUIntBE(0, length);\r\n });\r\n}\r\n\r\nfunction uintLE(length) {\r\n assertValidIntegerByteLengthFor(\"uintLE\", length);\r\n return parseBufferFor(\"uintLE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readUIntLE(0, length);\r\n });\r\n}\r\n\r\nfunction intBE(length) {\r\n assertValidIntegerByteLengthFor(\"intBE\", length);\r\n return parseBufferFor(\"intBE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readIntBE(0, length);\r\n });\r\n}\r\n\r\nfunction intLE(length) {\r\n assertValidIntegerByteLengthFor(\"intLE\", length);\r\n return parseBufferFor(\"intLE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readIntLE(0, length);\r\n });\r\n}\r\n\r\nfunction floatBE() {\r\n return parseBufferFor(\"floatBE\", 4).map(function(buff) {\r\n return buff.readFloatBE(0);\r\n });\r\n}\r\n\r\nfunction floatLE() {\r\n return parseBufferFor(\"floatLE\", 4).map(function(buff) {\r\n return buff.readFloatLE(0);\r\n });\r\n}\r\n\r\nfunction doubleBE() {\r\n return parseBufferFor(\"doubleBE\", 8).map(function(buff) {\r\n return buff.readDoubleBE(0);\r\n });\r\n}\r\n\r\nfunction doubleLE() {\r\n return parseBufferFor(\"doubleLE\", 8).map(function(buff) {\r\n return buff.readDoubleLE(0);\r\n });\r\n}\r\n\r\nfunction toArray(arrLike) {\r\n return Array.prototype.slice.call(arrLike);\r\n}\r\n// -*- Helpers -*-\r\n\r\nfunction isParser(obj) {\r\n return obj instanceof Parsimmon;\r\n}\r\n\r\nfunction isArray(x) {\r\n return {}.toString.call(x) === \"[object Array]\";\r\n}\r\n\r\nfunction isBuffer(x) {\r\n /* global Buffer */\r\n return bufferExists() && Buffer.isBuffer(x);\r\n}\r\n\r\nexport function makeSuccess(index, value) {\r\n return {\r\n status: true,\r\n index: index,\r\n value: value,\r\n furthest: -1,\r\n expected: []\r\n };\r\n}\r\n\r\nexport function makeFailure(index, expected) {\r\n if (!isArray(expected)) {\r\n expected = [expected];\r\n }\r\n return {\r\n status: false,\r\n index: -1,\r\n value: null,\r\n furthest: index,\r\n expected: expected\r\n };\r\n}\r\n\r\nfunction mergeReplies(result, last) {\r\n if (!last) {\r\n return result;\r\n }\r\n if (result.furthest > last.furthest) {\r\n return result;\r\n }\r\n var expected =\r\n result.furthest === last.furthest\r\n ? union(result.expected, last.expected)\r\n : last.expected;\r\n return {\r\n status: result.status,\r\n index: result.index,\r\n value: result.value,\r\n furthest: last.furthest,\r\n expected: expected\r\n };\r\n}\r\n\r\nfunction makeLineColumnIndex(input, i) {\r\n if (isBuffer(input)) {\r\n return {\r\n offset: i,\r\n line: -1,\r\n column: -1\r\n };\r\n }\r\n var lines = input.slice(0, i).split(\"\\n\");\r\n // Note that unlike the character offset, the line and column offsets are\r\n // 1-based.\r\n var lineWeAreUpTo = lines.length;\r\n var columnWeAreUpTo = lines[lines.length - 1].length + 1;\r\n return {\r\n offset: i,\r\n line: lineWeAreUpTo,\r\n column: columnWeAreUpTo\r\n };\r\n}\r\n\r\n// Returns the sorted set union of two arrays of strings\r\nfunction union(xs, ys) {\r\n var obj = {};\r\n for (var i = 0; i < xs.length; i++) {\r\n obj[xs[i]] = true;\r\n }\r\n for (var j = 0; j < ys.length; j++) {\r\n obj[ys[j]] = true;\r\n }\r\n var keys = [];\r\n for (var k in obj) {\r\n if ({}.hasOwnProperty.call(obj, k)) {\r\n keys.push(k);\r\n }\r\n }\r\n keys.sort();\r\n return keys;\r\n}\r\n\r\nfunction assertParser(p) {\r\n if (!isParser(p)) {\r\n throw new Error(\"not a parser: \" + p);\r\n }\r\n}\r\n\r\nfunction get(input, i) {\r\n if (typeof input === \"string\") {\r\n return input.charAt(i);\r\n }\r\n return input[i];\r\n}\r\n\r\n// TODO[ES5]: Switch to Array.isArray eventually.\r\nfunction assertArray(x) {\r\n if (!isArray(x)) {\r\n throw new Error(\"not an array: \" + x);\r\n }\r\n}\r\n\r\nfunction assertNumber(x) {\r\n if (typeof x !== \"number\") {\r\n throw new Error(\"not a number: \" + x);\r\n }\r\n}\r\n\r\nfunction assertRegexp(x) {\r\n if (!(x instanceof RegExp)) {\r\n throw new Error(\"not a regexp: \" + x);\r\n }\r\n var f = flags(x);\r\n for (var i = 0; i < f.length; i++) {\r\n var c = f.charAt(i);\r\n // Only allow regexp flags [imu] for now, since [g] and [y] specifically\r\n // mess up Parsimmon. If more non-stateful regexp flags are added in the\r\n // future, this will need to be revisited.\r\n if (c !== \"i\" && c !== \"m\" && c !== \"u\") {\r\n throw new Error('unsupported regexp flag \"' + c + '\": ' + x);\r\n }\r\n }\r\n}\r\n\r\nfunction assertFunction(x) {\r\n if (typeof x !== \"function\") {\r\n throw new Error(\"not a function: \" + x);\r\n }\r\n}\r\n\r\nfunction assertString(x) {\r\n if (typeof x !== \"string\") {\r\n throw new Error(\"not a string: \" + x);\r\n }\r\n}\r\n\r\n// -*- Error Formatting -*-\r\n\r\nvar linesBeforeStringError = 2;\r\nvar linesAfterStringError = 3;\r\nvar bytesPerLine = 8;\r\nvar bytesBefore = bytesPerLine * 5;\r\nvar bytesAfter = bytesPerLine * 4;\r\nvar defaultLinePrefix = \" \";\r\n\r\nexport function repeat(string, amount) {\r\n return new Array(amount + 1).join(string);\r\n}\r\n\r\nexport function formatExpected(expected) {\r\n if (expected.length === 1) {\r\n return \"Expected:\\n\\n\" + expected[0];\r\n }\r\n return \"Expected one of the following: \\n\\n\" + expected.join(\", \");\r\n}\r\n\r\nexport function leftPad(str, pad, char) {\r\n var add = pad - str.length;\r\n if (add <= 0) {\r\n return str;\r\n }\r\n return repeat(char, add) + str;\r\n}\r\n\r\nfunction toChunks(arr, chunkSize) {\r\n var length = arr.length;\r\n var chunks = [];\r\n var chunkIndex = 0;\r\n\r\n if (length <= chunkSize) {\r\n return [arr.slice()];\r\n }\r\n\r\n for (var i = 0; i < length; i++) {\r\n if (!chunks[chunkIndex]) {\r\n chunks.push([]);\r\n }\r\n\r\n chunks[chunkIndex].push(arr[i]);\r\n\r\n if ((i + 1) % chunkSize === 0) {\r\n chunkIndex++;\r\n }\r\n }\r\n\r\n return chunks;\r\n}\r\n\r\n// Get a range of indexes including `i`-th element and `before` and `after` amount of elements from `arr`.\r\nexport function rangeFromIndexAndOffsets(i, before, after, length) {\r\n return {\r\n // Guard against the negative upper bound for lines included in the output.\r\n from: i - before > 0 ? i - before : 0,\r\n to: i + after > length ? length : i + after\r\n };\r\n}\r\n\r\nexport function byteRangeToRange(byteRange) {\r\n // Exception for inputs smaller than `bytesPerLine`\r\n if (byteRange.from === 0 && byteRange.to === 1) {\r\n return {\r\n from: byteRange.from,\r\n to: byteRange.to\r\n };\r\n }\r\n\r\n return {\r\n from: byteRange.from / bytesPerLine,\r\n // Round `to`, so we don't get float if the amount of bytes is not divisible by `bytesPerLine`\r\n to: Math.floor(byteRange.to / bytesPerLine)\r\n };\r\n}\r\n\r\nexport function formatGot(input, error) {\r\n var index = error.index;\r\n var i = index.offset;\r\n\r\n var verticalMarkerLength = 1;\r\n var column;\r\n var lineWithErrorIndex;\r\n var lines;\r\n var lineRange;\r\n var lastLineNumberLabelLength;\r\n\r\n if (i === input.length) {\r\n return \"Got the end of the input\";\r\n }\r\n\r\n if (isBuffer(input)) {\r\n var byteLineWithErrorIndex = i - (i % bytesPerLine);\r\n var columnByteIndex = i - byteLineWithErrorIndex;\r\n var byteRange = rangeFromIndexAndOffsets(\r\n byteLineWithErrorIndex,\r\n bytesBefore,\r\n bytesAfter + bytesPerLine,\r\n input.length\r\n );\r\n var bytes = input.slice(byteRange.from, byteRange.to);\r\n var bytesInChunks = toChunks(bytes.toJSON().data, bytesPerLine);\r\n\r\n var byteLines = map(function(byteRow) {\r\n return map(function(byteValue) {\r\n // Prefix byte values with a `0` if they are shorter than 2 characters.\r\n return leftPad(byteValue.toString(16), 2, \"0\");\r\n }, byteRow);\r\n }, bytesInChunks);\r\n\r\n lineRange = byteRangeToRange(byteRange);\r\n lineWithErrorIndex = byteLineWithErrorIndex / bytesPerLine;\r\n column = columnByteIndex * 3;\r\n\r\n // Account for an extra space.\r\n if (columnByteIndex >= 4) {\r\n column += 1;\r\n }\r\n\r\n verticalMarkerLength = 2;\r\n lines = map(function(byteLine) {\r\n return byteLine.length <= 4\r\n ? byteLine.join(\" \")\r\n : byteLine.slice(0, 4).join(\" \") + \" \" + byteLine.slice(4).join(\" \");\r\n }, byteLines);\r\n lastLineNumberLabelLength = (\r\n (lineRange.to > 0 ? lineRange.to - 1 : lineRange.to) * 8\r\n ).toString(16).length;\r\n\r\n if (lastLineNumberLabelLength < 2) {\r\n lastLineNumberLabelLength = 2;\r\n }\r\n } else {\r\n var inputLines = input.split(/\\r\\n|[\\n\\r\\u2028\\u2029]/);\r\n column = index.column - 1;\r\n lineWithErrorIndex = index.line - 1;\r\n lineRange = rangeFromIndexAndOffsets(\r\n lineWithErrorIndex,\r\n linesBeforeStringError,\r\n linesAfterStringError,\r\n inputLines.length\r\n );\r\n\r\n lines = inputLines.slice(lineRange.from, lineRange.to);\r\n lastLineNumberLabelLength = lineRange.to.toString().length;\r\n }\r\n\r\n var lineWithErrorCurrentIndex = lineWithErrorIndex - lineRange.from;\r\n\r\n if (isBuffer(input)) {\r\n lastLineNumberLabelLength = (\r\n (lineRange.to > 0 ? lineRange.to - 1 : lineRange.to) * 8\r\n ).toString(16).length;\r\n\r\n if (lastLineNumberLabelLength < 2) {\r\n lastLineNumberLabelLength = 2;\r\n }\r\n }\r\n\r\n var linesWithLineNumbers = reduce(\r\n function(acc, lineSource, index) {\r\n var isLineWithError = index === lineWithErrorCurrentIndex;\r\n var prefix = isLineWithError ? \"> \" : defaultLinePrefix;\r\n var lineNumberLabel;\r\n\r\n if (isBuffer(input)) {\r\n lineNumberLabel = leftPad(\r\n ((lineRange.from + index) * 8).toString(16),\r\n lastLineNumberLabelLength,\r\n \"0\"\r\n );\r\n } else {\r\n lineNumberLabel = leftPad(\r\n (lineRange.from + index + 1).toString(),\r\n lastLineNumberLabelLength,\r\n \" \"\r\n );\r\n }\r\n\r\n return [].concat(\r\n acc,\r\n [prefix + lineNumberLabel + \" | \" + lineSource],\r\n isLineWithError\r\n ? [\r\n defaultLinePrefix +\r\n repeat(\" \", lastLineNumberLabelLength) +\r\n \" | \" +\r\n leftPad(\"\", column, \" \") +\r\n repeat(\"^\", verticalMarkerLength)\r\n ]\r\n : []\r\n );\r\n },\r\n [],\r\n lines\r\n );\r\n\r\n return linesWithLineNumbers.join(\"\\n\");\r\n}\r\n\r\nexport function formatError(input, error) {\r\n return [\r\n \"\\n\",\r\n \"-- PARSING FAILED \" + repeat(\"-\", 50),\r\n \"\\n\\n\",\r\n formatGot(input, error),\r\n \"\\n\\n\",\r\n formatExpected(error.expected),\r\n \"\\n\"\r\n ].join(\"\");\r\n}\r\n\r\nexport function flags(re) {\r\n var s = \"\" + re;\r\n return s.slice(s.lastIndexOf(\"/\") + 1);\r\n}\r\n\r\nexport function anchoredRegexp(re) {\r\n return RegExp(\"^(?:\" + re.source + \")\", flags(re));\r\n}\r\n\r\n// -*- Combinators -*-\r\n\r\nexport function seq() {\r\n var parsers = [].slice.call(arguments);\r\n var numParsers = parsers.length;\r\n for (var j = 0; j < numParsers; j += 1) {\r\n assertParser(parsers[j]);\r\n }\r\n return Parsimmon(function(input, i) {\r\n var result;\r\n var accum = new Array(numParsers);\r\n for (var j = 0; j < numParsers; j += 1) {\r\n result = mergeReplies(parsers[j]._(input, i), result);\r\n if (!result.status) {\r\n return result;\r\n }\r\n accum[j] = result.value;\r\n i = result.index;\r\n }\r\n return mergeReplies(makeSuccess(i, accum), result);\r\n });\r\n}\r\n\r\nexport function seqObj() {\r\n var seenKeys = {};\r\n var totalKeys = 0;\r\n var parsers = toArray(arguments);\r\n var numParsers = parsers.length;\r\n for (var j = 0; j < numParsers; j += 1) {\r\n var p = parsers[j];\r\n if (isParser(p)) {\r\n continue;\r\n }\r\n if (isArray(p)) {\r\n var isWellFormed =\r\n p.length === 2 && typeof p[0] === \"string\" && isParser(p[1]);\r\n if (isWellFormed) {\r\n var key = p[0];\r\n if (Object.prototype.hasOwnProperty.call(seenKeys, key)) {\r\n throw new Error(\"seqObj: duplicate key \" + key);\r\n }\r\n seenKeys[key] = true;\r\n totalKeys++;\r\n continue;\r\n }\r\n }\r\n throw new Error(\r\n \"seqObj arguments must be parsers or [string, parser] array pairs.\"\r\n );\r\n }\r\n if (totalKeys === 0) {\r\n throw new Error(\"seqObj expects at least one named parser, found zero\");\r\n }\r\n return Parsimmon(function(input, i) {\r\n var result;\r\n var accum = {};\r\n for (var j = 0; j < numParsers; j += 1) {\r\n var name;\r\n var parser;\r\n if (isArray(parsers[j])) {\r\n name = parsers[j][0];\r\n parser = parsers[j][1];\r\n } else {\r\n name = null;\r\n parser = parsers[j];\r\n }\r\n result = mergeReplies(parser._(input, i), result);\r\n if (!result.status) {\r\n return result;\r\n }\r\n if (name) {\r\n accum[name] = result.value;\r\n }\r\n i = result.index;\r\n }\r\n return mergeReplies(makeSuccess(i, accum), result);\r\n });\r\n}\r\n\r\nexport function seqMap() {\r\n var args = [].slice.call(arguments);\r\n if (args.length === 0) {\r\n throw new Error(\"seqMap needs at least one argument\");\r\n }\r\n var mapper = args.pop();\r\n assertFunction(mapper);\r\n return seq.apply(null, args).map(function(results) {\r\n return mapper.apply(null, results);\r\n });\r\n}\r\n\r\n// TODO[ES5]: Revisit this with Object.keys and .bind.\r\nexport function createLanguage(parsers) {\r\n var language = {};\r\n for (var key in parsers) {\r\n if ({}.hasOwnProperty.call(parsers, key)) {\r\n (function(key) {\r\n var func = function() {\r\n return parsers[key](language);\r\n };\r\n language[key] = lazy(func);\r\n })(key);\r\n }\r\n }\r\n return language;\r\n}\r\n\r\nexport function alt() {\r\n var parsers = [].slice.call(arguments);\r\n var numParsers = parsers.length;\r\n if (numParsers === 0) {\r\n return fail(\"zero alternates\");\r\n }\r\n for (var j = 0; j < numParsers; j += 1) {\r\n assertParser(parsers[j]);\r\n }\r\n return Parsimmon(function(input, i) {\r\n var result;\r\n for (var j = 0; j < parsers.length; j += 1) {\r\n result = mergeReplies(parsers[j]._(input, i), result);\r\n if (result.status) {\r\n return result;\r\n }\r\n }\r\n return result;\r\n });\r\n}\r\n\r\nexport function sepBy(parser, separator) {\r\n // Argument asserted by sepBy1\r\n return sepBy1(parser, separator).or(succeed([]));\r\n}\r\n\r\nexport function sepBy1(parser, separator) {\r\n assertParser(parser);\r\n assertParser(separator);\r\n var pairs = separator.then(parser).many();\r\n return seqMap(parser, pairs, function(r, rs) {\r\n return [r].concat(rs);\r\n });\r\n}\r\n\r\n// -*- Core Parsing Methods -*-\r\n\r\n_.parse = function(input) {\r\n if (typeof input !== \"string\" && !isBuffer(input)) {\r\n throw new Error(\r\n \".parse must be called with a string or Buffer as its argument\"\r\n );\r\n }\r\n var result = this.skip(eof)._(input, 0);\r\n if (result.status) {\r\n return {\r\n status: true,\r\n value: result.value\r\n };\r\n }\r\n return {\r\n status: false,\r\n index: makeLineColumnIndex(input, result.furthest),\r\n expected: result.expected\r\n };\r\n};\r\n\r\n// -*- Other Methods -*-\r\n\r\n_.tryParse = function(str) {\r\n var result = this.parse(str);\r\n if (result.status) {\r\n return result.value;\r\n } else {\r\n var msg = formatError(str, result);\r\n var err = new Error(msg);\r\n err.type = \"ParsimmonError\";\r\n err.result = result;\r\n throw err;\r\n }\r\n};\r\n\r\n_.or = function(alternative) {\r\n return alt(this, alternative);\r\n};\r\n\r\n_.trim = function(parser) {\r\n return this.wrap(parser, parser);\r\n};\r\n\r\n_.wrap = function(leftParser, rightParser) {\r\n return seqMap(leftParser, this, rightParser, function(left, middle) {\r\n return middle;\r\n });\r\n};\r\n\r\n_.thru = function(wrapper) {\r\n return wrapper(this);\r\n};\r\n\r\n_.then = function(next) {\r\n assertParser(next);\r\n return seq(this, next).map(function(results) {\r\n return results[1];\r\n });\r\n};\r\n\r\n_.many = function() {\r\n var self = this;\r\n\r\n return Parsimmon(function(input, i) {\r\n var accum = [];\r\n var result = undefined;\r\n\r\n for (;;) {\r\n result = mergeReplies(self._(input, i), result);\r\n if (result.status) {\r\n if (i === result.index) {\r\n throw new Error(\r\n \"infinite loop detected in .many() parser --- calling .many() on \" +\r\n \"a parser which can accept zero characters is usually the cause\"\r\n );\r\n }\r\n i = result.index;\r\n accum.push(result.value);\r\n } else {\r\n return mergeReplies(makeSuccess(i, accum), result);\r\n }\r\n }\r\n });\r\n};\r\n\r\n_.tieWith = function(separator) {\r\n assertString(separator);\r\n return this.map(function(args) {\r\n assertArray(args);\r\n if (args.length) {\r\n assertString(args[0]);\r\n var s = args[0];\r\n for (var i = 1; i < args.length; i++) {\r\n assertString(args[i]);\r\n s += separator + args[i];\r\n }\r\n return s;\r\n } else {\r\n return \"\";\r\n }\r\n });\r\n};\r\n\r\n_.tie = function() {\r\n return this.tieWith(\"\");\r\n};\r\n\r\n_.times = function(min, max) {\r\n var self = this;\r\n if (arguments.length < 2) {\r\n max = min;\r\n }\r\n assertNumber(min);\r\n assertNumber(max);\r\n return Parsimmon(function(input, i) {\r\n var accum = [];\r\n var result = undefined;\r\n var prevResult = undefined;\r\n for (var times = 0; times < min; times += 1) {\r\n result = self._(input, i);\r\n prevResult = mergeReplies(result, prevResult);\r\n if (result.status) {\r\n i = result.index;\r\n accum.push(result.value);\r\n } else {\r\n return prevResult;\r\n }\r\n }\r\n for (; times < max; times += 1) {\r\n result = self._(input, i);\r\n prevResult = mergeReplies(result, prevResult);\r\n if (result.status) {\r\n i = result.index;\r\n accum.push(result.value);\r\n } else {\r\n break;\r\n }\r\n }\r\n return mergeReplies(makeSuccess(i, accum), prevResult);\r\n });\r\n};\r\n\r\n_.result = function(res) {\r\n return this.map(function() {\r\n return res;\r\n });\r\n};\r\n\r\n_.atMost = function(n) {\r\n return this.times(0, n);\r\n};\r\n\r\n_.atLeast = function(n) {\r\n return seqMap(this.times(n), this.many(), function(init, rest) {\r\n return init.concat(rest);\r\n });\r\n};\r\n\r\n_.map = function(fn) {\r\n assertFunction(fn);\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var result = self._(input, i);\r\n if (!result.status) {\r\n return result;\r\n }\r\n return mergeReplies(makeSuccess(result.index, fn(result.value)), result);\r\n });\r\n};\r\n\r\n_.contramap = function(fn) {\r\n assertFunction(fn);\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var result = self.parse(fn(input.slice(i)));\r\n if (!result.status) {\r\n return result;\r\n }\r\n return makeSuccess(i + input.length, result.value);\r\n });\r\n};\r\n\r\n_.promap = function(f, g) {\r\n assertFunction(f);\r\n assertFunction(g);\r\n return this.contramap(f).map(g);\r\n};\r\n\r\n_.skip = function(next) {\r\n return seq(this, next).map(function(results) {\r\n return results[0];\r\n });\r\n};\r\n\r\n_.mark = function() {\r\n return seqMap(index, this, index, function(start, value, end) {\r\n return {\r\n start: start,\r\n value: value,\r\n end: end\r\n };\r\n });\r\n};\r\n\r\n_.node = function(name) {\r\n return seqMap(index, this, index, function(start, value, end) {\r\n return {\r\n name: name,\r\n value: value,\r\n start: start,\r\n end: end\r\n };\r\n });\r\n};\r\n\r\n_.sepBy = function(separator) {\r\n return sepBy(this, separator);\r\n};\r\n\r\n_.sepBy1 = function(separator) {\r\n return sepBy1(this, separator);\r\n};\r\n\r\n_.lookahead = function(x) {\r\n return this.skip(lookahead(x));\r\n};\r\n\r\n_.notFollowedBy = function(x) {\r\n return this.skip(notFollowedBy(x));\r\n};\r\n\r\n_.desc = function(expected) {\r\n if (!isArray(expected)) {\r\n expected = [expected];\r\n }\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var reply = self._(input, i);\r\n if (!reply.status) {\r\n reply.expected = expected;\r\n }\r\n return reply;\r\n });\r\n};\r\n\r\n_.fallback = function(result) {\r\n return this.or(succeed(result));\r\n};\r\n\r\n_.ap = function(other) {\r\n return seqMap(other, this, function(f, x) {\r\n return f(x);\r\n });\r\n};\r\n\r\n_.chain = function(f) {\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var result = self._(input, i);\r\n if (!result.status) {\r\n return result;\r\n }\r\n var nextParser = f(result.value);\r\n return mergeReplies(nextParser._(input, result.index), result);\r\n });\r\n};\r\n\r\n// -*- Constructors -*-\r\n\r\nexport function string(str) {\r\n assertString(str);\r\n var expected = \"'\" + str + \"'\";\r\n return Parsimmon(function(input, i) {\r\n var j = i + str.length;\r\n var head = input.slice(i, j);\r\n if (head === str) {\r\n return makeSuccess(j, head);\r\n } else {\r\n return makeFailure(i, expected);\r\n }\r\n });\r\n}\r\n\r\nexport function byte(b) {\r\n ensureBuffer();\r\n assertNumber(b);\r\n if (b > 0xff) {\r\n throw new Error(\r\n \"Value specified to byte constructor (\" +\r\n b +\r\n \"=0x\" +\r\n b.toString(16) +\r\n \") is larger in value than a single byte.\"\r\n );\r\n }\r\n var expected = (b > 0xf ? \"0x\" : \"0x0\") + b.toString(16);\r\n return Parsimmon(function(input, i) {\r\n var head = get(input, i);\r\n if (head === b) {\r\n return makeSuccess(i + 1, head);\r\n } else {\r\n return makeFailure(i, expected);\r\n }\r\n });\r\n}\r\n\r\nexport function regexp(re, group) {\r\n assertRegexp(re);\r\n if (arguments.length >= 2) {\r\n assertNumber(group);\r\n } else {\r\n group = 0;\r\n }\r\n var anchored = anchoredRegexp(re);\r\n var expected = \"\" + re;\r\n return Parsimmon(function(input, i) {\r\n var match = anchored.exec(input.slice(i));\r\n if (match) {\r\n if (0 <= group && group <= match.length) {\r\n var fullMatch = match[0];\r\n var groupMatch = match[group];\r\n return makeSuccess(i + fullMatch.length, groupMatch);\r\n }\r\n var message =\r\n \"valid match group (0 to \" + match.length + \") in \" + expected;\r\n return makeFailure(i, message);\r\n }\r\n return makeFailure(i, expected);\r\n });\r\n}\r\n\r\nexport function succeed(value) {\r\n return Parsimmon(function(input, i) {\r\n return makeSuccess(i, value);\r\n });\r\n}\r\n\r\nexport function fail(expected) {\r\n return Parsimmon(function(input, i) {\r\n return makeFailure(i, expected);\r\n });\r\n}\r\n\r\nexport function lookahead(x) {\r\n if (isParser(x)) {\r\n return Parsimmon(function(input, i) {\r\n var result = x._(input, i);\r\n result.index = i;\r\n result.value = \"\";\r\n return result;\r\n });\r\n } else if (typeof x === \"string\") {\r\n return lookahead(string(x));\r\n } else if (x instanceof RegExp) {\r\n return lookahead(regexp(x));\r\n }\r\n throw new Error(\"not a string, regexp, or parser: \" + x);\r\n}\r\n\r\nexport function notFollowedBy(parser) {\r\n assertParser(parser);\r\n return Parsimmon(function(input, i) {\r\n var result = parser._(input, i);\r\n var text = input.slice(i, result.index);\r\n return result.status\r\n ? makeFailure(i, 'not \"' + text + '\"')\r\n : makeSuccess(i, null);\r\n });\r\n}\r\n\r\nexport function test(predicate) {\r\n assertFunction(predicate);\r\n return Parsimmon(function(input, i) {\r\n var char = get(input, i);\r\n if (i < input.length && predicate(char)) {\r\n return makeSuccess(i + 1, char);\r\n } else {\r\n return makeFailure(i, \"a character/byte matching \" + predicate);\r\n }\r\n });\r\n}\r\n\r\nexport function oneOf(str) {\r\n var expected = str.split(\"\");\r\n for (var idx = 0; idx < expected.length; idx++) {\r\n expected[idx] = \"'\" + expected[idx] + \"'\";\r\n }\r\n return test(function(ch) {\r\n return str.indexOf(ch) >= 0;\r\n }).desc(expected);\r\n}\r\n\r\nexport function noneOf(str) {\r\n return test(function(ch) {\r\n return str.indexOf(ch) < 0;\r\n }).desc(\"none of '\" + str + \"'\");\r\n}\r\n\r\nexport function custom(parsingFunction) {\r\n return Parsimmon(parsingFunction(makeSuccess, makeFailure));\r\n}\r\n\r\n// TODO[ES5]: Improve error message using JSON.stringify eventually.\r\nexport function range(begin, end) {\r\n return test(function(ch) {\r\n return begin <= ch && ch <= end;\r\n }).desc(begin + \"-\" + end);\r\n}\r\n\r\nexport function takeWhile(predicate) {\r\n assertFunction(predicate);\r\n\r\n return Parsimmon(function(input, i) {\r\n var j = i;\r\n while (j < input.length && predicate(get(input, j))) {\r\n j++;\r\n }\r\n return makeSuccess(j, input.slice(i, j));\r\n });\r\n}\r\n\r\nexport function lazy(desc, f) {\r\n if (arguments.length < 2) {\r\n f = desc;\r\n desc = undefined;\r\n }\r\n\r\n var parser = Parsimmon(function(input, i) {\r\n parser._ = f()._;\r\n return parser._(input, i);\r\n });\r\n\r\n if (desc) {\r\n return parser.desc(desc);\r\n } else {\r\n return parser;\r\n }\r\n}\r\n\r\n// -*- Fantasy Land Extras -*-\r\n\r\nfunction empty() {\r\n return fail(\"fantasy-land/empty\");\r\n}\r\n\r\n_.concat = _.or;\r\n_.empty = empty;\r\n_.of = succeed;\r\n_[\"fantasy-land/ap\"] = _.ap;\r\n_[\"fantasy-land/chain\"] = _.chain;\r\n_[\"fantasy-land/concat\"] = _.concat;\r\n_[\"fantasy-land/empty\"] = _.empty;\r\n_[\"fantasy-land/of\"] = _.of;\r\n_[\"fantasy-land/map\"] = _.map;\r\n\r\n// -*- Base Parsers -*-\r\n\r\nexport const index = Parsimmon(function(input, i) {\r\n return makeSuccess(i, makeLineColumnIndex(input, i));\r\n});\r\n\r\nexport const any = Parsimmon(function(input, i) {\r\n if (i >= input.length) {\r\n return makeFailure(i, \"any character/byte\");\r\n }\r\n return makeSuccess(i + 1, get(input, i));\r\n});\r\n\r\nexport const all = Parsimmon(function(input, i) {\r\n return makeSuccess(input.length, input.slice(i));\r\n});\r\n\r\nexport const eof = Parsimmon(function(input, i) {\r\n if (i < input.length) {\r\n return makeFailure(i, \"EOF\");\r\n }\r\n return makeSuccess(i, null);\r\n});\r\n\r\nexport const digit = regexp(/[0-9]/).desc(\"a digit\");\r\nexport const digits = regexp(/[0-9]*/).desc(\"optional digits\");\r\nexport const letter = regexp(/[a-z]/i).desc(\"a letter\");\r\nexport const letters = regexp(/[a-z]*/i).desc(\"optional letters\");\r\nexport const optWhitespace = regexp(/\\s*/).desc(\"optional whitespace\");\r\nexport const whitespace = regexp(/\\s+/).desc(\"whitespace\");\r\nexport const cr = string(\"\\r\");\r\nexport const lf = string(\"\\n\");\r\nexport const crlf = string(\"\\r\\n\");\r\nexport const newline = alt(crlf, lf, cr).desc(\"newline\");\r\nexport const end = alt(newline, eof);","import { Record } from \"../fable-library-js.4.19.3/Types.js\";\nimport { string_type, record_type, int32_type } from \"../fable-library-js.4.19.3/Reflection.js\";\nimport { some } from \"../fable-library-js.4.19.3/Option.js\";\nimport { seq, noneOf, optWhitespace, whitespace, oneOf, string, takeWhile, test, fail, all, any, digit, lookahead, succeed, eof, letters, letter, lazy, index } from \"./Parsimmon.js\";\nimport { join } from \"../fable-library-js.4.19.3/String.js\";\nimport { reduce } from \"../fable-library-js.4.19.3/List.js\";\n\nexport class TokenPosition extends Record {\n constructor(offset, line, column) {\n super();\n this.offset = (offset | 0);\n this.line = (line | 0);\n this.column = (column | 0);\n }\n}\n\nexport function TokenPosition_$reflection() {\n return record_type(\"Fable.Parsimmon.TokenPosition\", [], TokenPosition, () => [[\"offset\", int32_type], [\"line\", int32_type], [\"column\", int32_type]]);\n}\n\nexport class NodeResult$1 extends Record {\n constructor(name, value, start, end) {\n super();\n this.name = name;\n this.value = value;\n this.start = start;\n this.end = end;\n }\n}\n\nexport function NodeResult$1_$reflection(gen0) {\n return record_type(\"Fable.Parsimmon.NodeResult`1\", [gen0], NodeResult$1, () => [[\"name\", string_type], [\"value\", gen0], [\"start\", TokenPosition_$reflection()], [\"end\", TokenPosition_$reflection()]]);\n}\n\nexport function Parsimmon_parseRaw(input, parser) {\n return parser.parse(input);\n}\n\nexport function Parsimmon_parse(input, parser) {\n const result = parser.parse(input);\n if (result.status) {\n return some(result.value);\n }\n else {\n return undefined;\n }\n}\n\nexport const Parsimmon_index = index;\n\n/**\n * Returns a new parser which tries parser, and if it fails uses otherParser. Example:\n */\nexport function Parsimmon_orTry(otherParser, parser) {\n return parser.or(otherParser);\n}\n\n/**\n * Returns a new parser that tries to parse the input exactly `n` times\n */\nexport function Parsimmon_times(n, parser) {\n return parser.times(n);\n}\n\n/**\n * Expects parser at least n times. Yields an array of the results.\n */\nexport function Parsimmon_atLeast(n, parser) {\n return parser.atLeast(n);\n}\n\n/**\n * Expects parser at most n times. Yields an array of the results.\n */\nexport function Parsimmon_atMost(n, parser) {\n return parser.atMost(n);\n}\n\nexport function Parsimmon_skip(skipped, keep) {\n return keep.skip(skipped);\n}\n\nexport function Parsimmon_many(parser) {\n return parser.many();\n}\n\nexport const Parsimmon_ofLazy = lazy;\n\n/**\n * This is the same as Parsimmon.sepBy, but matches the parser at least once.\n */\nexport function Parsimmon_seperateByAtLeastOne(seperator, parser) {\n return parser.sepBy1(seperator);\n}\n\n/**\n * Expects parser \"after\" to follow parser \"before\", and yields the result of \"before\".\n */\nexport function Parsimmon_chain(after, before) {\n return before.then(after);\n}\n\n/**\n * Returns a new parser which tries parser \"p\", and on success calls the function \"f\" with the result of the parse, which is expected to return another parser, which will be tried next. This allows you to dynamically decide how to continue the parse, which is impossible with the other combinators.\n */\nexport function Parsimmon_bind(f, p) {\n return p.chain(f);\n}\n\nexport const Parsimmon_letter = letter;\n\n/**\n * Returns a parser that tries `parser` and succeeds if `parser` is able to parse between `min` and `max` times\n */\nexport function Parsimmon_timesBetween(min, max, parser) {\n return parser.times(min, max);\n}\n\nexport const Parsimmon_letters = letters;\n\nexport const Parsimmon_endOfFile = eof;\n\n/**\n * Returns a parser that looks for anything but whatever \"p\" wants to parse, and does not consume it. Yields the same result as \"before\".\n */\nexport function Parsimmon_notFollowedBy(p, before) {\n return before.notFollowedBy(p);\n}\n\nexport const Parsimmon_succeed = succeed;\n\nexport const Parsimmon_lookahead = lookahead;\n\nexport const Parsimmon_digit = digit;\n\nexport const Parsimmon_digits = Parsimmon_many(Parsimmon_digit);\n\n/**\n * Returns a new parser which tries \"parser\" and, if it fails, yields value without consuming any input.\n */\nexport function Parsimmon_fallback(value, parser) {\n return parser.fallback(value);\n}\n\nexport function Parsimmon_seperateBy(content, others) {\n return others.sepBy(content);\n}\n\nexport function Parsimmon_between(left, right, middle) {\n return Parsimmon_skip(right, Parsimmon_chain(middle, left));\n}\n\n/**\n * Transforms the parsed value of the given parser.\n */\nexport function Parsimmon_map(f, parser) {\n return parser.map(f);\n}\n\n/**\n * Alias of Parsimmon.concat\n */\nexport function Parsimmon_tie(parser) {\n return Parsimmon_map((strings) => join(\"\", strings), parser);\n}\n\nexport const Parsimmon_any = any;\n\n/**\n * Accepts any number of parsers, yielding the value of the first one that succeeds, backtracking in between.\n */\nexport function Parsimmon_choose(ps) {\n return reduce((acc, parser) => (acc.or(parser)), ps);\n}\n\nexport const Parsimmon_all = all;\n\nexport const Parsimmon_fail = fail;\n\nexport const Parsimmon_satisfy = test;\n\nexport const Parsimmon_takeWhile = takeWhile;\n\nexport const Parsimmon_str = string;\n\nexport const Parsimmon_oneOf = oneOf;\n\nexport const Parsimmon_whitespace = whitespace;\n\nexport const Parsimmon_optionalWhitespace = optWhitespace;\n\n/**\n * Returns a parser that succeeds one or more times\n */\nexport function Parsimmon_atLeastOneOrMany(parser) {\n return Parsimmon_atLeast(1, parser);\n}\n\nexport function Parsimmon_stringReturn(input, value) {\n return Parsimmon_map((_arg) => value, Parsimmon_str(input));\n}\n\nexport const Parsimmon_noneOf = noneOf;\n\nexport const Parsimmon_seq2 = seq;\n\nexport function Parsimmon_trim(trimmed, p) {\n return p.trim(trimmed);\n}\n\n/**\n * Equivalent to `parser.map (String.concat \"\")`\n */\nexport function Parsimmon_concat(parser) {\n return parser.map((strings) => join(\"\", strings));\n}\n\nexport const Parsimmon_seq3 = seq;\n\nexport const Parsimmon_seq4 = seq;\n\nexport const Parsimmon_seq5 = seq;\n\n/**\n * Equivalent to `parser.node(\"description\")`\n */\nexport function Parsimmon_node(description, p) {\n return p.node(description);\n}\n\n","import { Parsimmon_seq3, Parsimmon_seperateBy, Parsimmon_ofLazy, Parsimmon_optionalWhitespace, Parsimmon_between, Parsimmon_satisfy, Parsimmon_orTry, Parsimmon_many, Parsimmon_oneOf, Parsimmon_stringReturn, Parsimmon_choose, Parsimmon_str, Parsimmon_seq2, Parsimmon_map, Parsimmon_digit, Parsimmon_atLeastOneOrMany, Parsimmon_concat } from \"../Fable.Parsimmon.4.1.0/Parsimmon.fs.js\";\nimport { parse } from \"../fable-library-js.4.19.3/Double.js\";\nimport { regexp } from \"../Fable.Parsimmon.4.1.0/Parsimmon.js\";\nimport { map, ofArray } from \"../fable-library-js.4.19.3/List.js\";\nimport { Json } from \"./Json.fs.js\";\nimport { ofList } from \"../fable-library-js.4.19.3/Map.js\";\nimport { Lazy, comparePrimitives } from \"../fable-library-js.4.19.3/Util.js\";\n\nexport const digits = Parsimmon_concat(Parsimmon_atLeastOneOrMany(Parsimmon_digit));\n\nexport const jint = Parsimmon_map(parse, digits);\n\nexport const negJint = Parsimmon_map((tupledArg) => -tupledArg[1], Parsimmon_seq2(Parsimmon_str(\"-\"), jint));\n\nexport const jfloat = Parsimmon_map(parse, Parsimmon_choose(ofArray([regexp(new RegExp(\"-?(0|[1-9][0-9]*)?[.][0-9]+([eE][+-]?[0-9]+)?\")), regexp(new RegExp(\"-?[1-9][0-9]*[eE][+-]?[0-9]+\"))])));\n\nexport const jnumber = Parsimmon_map((Item) => (new Json(0, [Item])), Parsimmon_choose(ofArray([jfloat, jint, negJint])));\n\nexport const jbool = Parsimmon_choose(ofArray([Parsimmon_stringReturn(\"true\", new Json(2, [true])), Parsimmon_stringReturn(\"false\", new Json(2, [false]))]));\n\nexport const jnull = Parsimmon_stringReturn(\"null\", new Json(3, []));\n\nexport const stringLiteral = (() => {\n const escape = Parsimmon_map((_arg) => {\n switch (_arg) {\n case \"b\":\n return \"\\b\";\n case \"f\":\n return \"\\f\";\n case \"n\":\n return \"\\n\";\n case \"r\":\n return \"\\r\";\n case \"t\":\n return \"\\t\";\n default:\n return _arg;\n }\n }, Parsimmon_oneOf(\"\\\"\\\\/bfnrt\"));\n const anyCharSnippet = Parsimmon_concat(Parsimmon_many(Parsimmon_orTry(Parsimmon_map((tuple) => tuple[1], Parsimmon_seq2(Parsimmon_str(\"\\\\\"), escape)), Parsimmon_satisfy((c_1) => ((c_1 !== \"\\\"\") && (c_1 !== \"\\\\\"))))));\n return Parsimmon_between(Parsimmon_str(\"\\\"\"), Parsimmon_str(\"\\\"\"), anyCharSnippet);\n})();\n\nexport const jstring = stringLiteral.map((Item) => (new Json(1, [Item])));\n\nexport function withWhitespace(p) {\n return Parsimmon_between(Parsimmon_optionalWhitespace, Parsimmon_optionalWhitespace, p);\n}\n\nexport const jvalue = Parsimmon_choose(map(withWhitespace, ofArray([jnull, jbool, jnumber, jstring])));\n\nexport const comma = withWhitespace(Parsimmon_str(\",\"));\n\nexport function json$004080() {\n return Parsimmon_ofLazy(() => Parsimmon_choose(ofArray([jvalue, Parsimmon_map((arg) => (new Json(4, [ofArray(arg)])), Parsimmon_between(withWhitespace(Parsimmon_str(\"[\")), withWhitespace(Parsimmon_str(\"]\")), Parsimmon_seperateBy(comma, json$004080$002D1.Value))), Parsimmon_map((arg_2) => (new Json(5, [ofList(ofArray(arg_2), {\n Compare: comparePrimitives,\n })])), Parsimmon_between(withWhitespace(Parsimmon_str(\"{\")), withWhitespace(Parsimmon_str(\"}\")), Parsimmon_seperateBy(comma, Parsimmon_map((tupledArg) => [tupledArg[0], tupledArg[2]], Parsimmon_seq3(withWhitespace(stringLiteral), withWhitespace(Parsimmon_str(\":\")), withWhitespace(json$004080$002D1.Value))))))])));\n}\n\nexport const json$004080$002D1 = new Lazy(json$004080);\n\nexport const json = json$004080$002D1.Value;\n\nexport const jsonParser = withWhitespace(json);\n\n","import { Parsimmon_parse } from \"../Fable.Parsimmon.4.1.0/Parsimmon.fs.js\";\nimport { jsonParser } from \"./Parser.fs.js\";\nimport { join, toText, printf, toFail } from \"../fable-library-js.4.19.3/String.js\";\nimport { head, tail, isEmpty, empty, singleton, concat, ofArray, map as map_1 } from \"../fable-library-js.4.19.3/List.js\";\nimport { tryFind, ofList, toList } from \"../fable-library-js.4.19.3/Map.js\";\nimport { curry2, comparePrimitives, isIterable, defaultOf, disposeSafe, getEnumerator } from \"../fable-library-js.4.19.3/Util.js\";\nimport { toDecimal } from \"../fable-library-js.4.19.3/BigInt.js\";\nimport { toString } from \"../fable-library-js.4.19.3/Date.js\";\nimport { value as value_5, some } from \"../fable-library-js.4.19.3/Option.js\";\nimport { $007CNativeObject$007C_$007C, $007CNativeArray$007C_$007C, $007CNull$007C_$007C, $007CNativeBool$007C_$007C, $007CNativeNumber$007C_$007C, $007CNativeString$007C_$007C } from \"./TypeCheck.fs.js\";\nimport { Json } from \"./Json.fs.js\";\nimport { map as map_2 } from \"../fable-library-js.4.19.3/Array.js\";\nimport { map as map_3, delay, toList as toList_1 } from \"../fable-library-js.4.19.3/Seq.js\";\n\nexport function InteropUtil_isDateOffset(x) {\n if (x instanceof Date) {\n return \"offset\" in x;\n }\n else {\n return false;\n }\n}\n\nexport function InteropUtil_isObjectLiteral(x) {\n return (typeof x) === \"object\";\n}\n\nexport function InteropUtil_isBigInt(x) {\n if ((((!(x == null) && InteropUtil_isObjectLiteral(x)) && (\"signInt\" in x)) && (\"v\" in x)) && (\"digits\" in (x[\"v\"]))) {\n return \"bound\" in (x[\"v\"]);\n }\n else {\n return false;\n }\n}\n\n/**\n * Tries to parse a string into a Json structured JSON data.\n */\nexport function SimpleJson_tryParse(input) {\n return Parsimmon_parse(input, jsonParser);\n}\n\n/**\n * Parses the input string into a structured JSON data. Fails with an exception if parsing fails.\n */\nexport function SimpleJson_parse(input) {\n const matchValue = SimpleJson_tryParse(input);\n if (matchValue == null) {\n return toFail(printf(\"Could not parse the JSON input: %s\"))(input);\n }\n else {\n return matchValue;\n }\n}\n\n/**\n * Stringifies a Json object back to string representation\n */\nexport function SimpleJson_toString(_arg) {\n switch (_arg.tag) {\n case 2:\n if (_arg.fields[0]) {\n return \"true\";\n }\n else {\n return \"false\";\n }\n case 0:\n return _arg.fields[0].toString();\n case 1:\n return toText(printf(\"\\\"%s\\\"\"))(_arg.fields[0]);\n case 4: {\n const arg_1 = join(\",\", map_1(SimpleJson_toString, _arg.fields[0]));\n return toText(printf(\"[%s]\"))(arg_1);\n }\n case 5: {\n const arg_4 = join(\",\", map_1((tupledArg) => {\n const arg_3 = SimpleJson_toString(tupledArg[1]);\n return toText(printf(\"\\\"%s\\\":%s\"))(tupledArg[0])(arg_3);\n }, toList(_arg.fields[0])));\n return toText(printf(\"{%s}\"))(arg_4);\n }\n default:\n return \"null\";\n }\n}\n\nexport function SimpleJson_toPlainObject(input) {\n switch (input.tag) {\n case 2:\n return input.fields[0];\n case 0:\n return input.fields[0];\n case 1:\n return input.fields[0];\n case 4: {\n const array = [];\n const enumerator = getEnumerator(input.fields[0]);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const value_3 = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n void (array.push(SimpleJson_toPlainObject(value_3)));\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return array;\n }\n case 5: {\n const jsObject = ({});\n const enumerator_1 = getEnumerator(toList(input.fields[0]));\n try {\n while (enumerator_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar = enumerator_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n jsObject[forLoopVar[0]] = SimpleJson_toPlainObject(forLoopVar[1]);\n }\n }\n finally {\n disposeSafe(enumerator_1);\n }\n return jsObject;\n }\n default:\n return defaultOf();\n }\n}\n\nexport function SimpleJson_stringify(value) {\n if (value == null) {\n return JSON.stringify(defaultOf());\n }\n else {\n return JSON.stringify(value, (key, jsonValue) => (InteropUtil_isBigInt(jsonValue) ? toDecimal(jsonValue).toString() : ((jsonValue instanceof Date) ? toString(jsonValue, \"o\") : ((typeof jsonValue === \"string\") ? jsonValue : (isIterable(jsonValue) ? (Array.isArray(jsonValue) ? jsonValue : (Array.from(jsonValue))) : (InteropUtil_isBigInt(jsonValue) ? toDecimal(jsonValue).toString() : (InteropUtil_isDateOffset(jsonValue) ? toString(jsonValue, \"O\") : jsonValue)))))), some(0));\n }\n}\n\nexport function SimpleJson_parseNative$0027(x) {\n const activePatternResult = $007CNativeString$007C_$007C(x);\n if (activePatternResult != null) {\n const str = activePatternResult;\n return new Json(1, [str]);\n }\n else {\n const activePatternResult_1 = $007CNativeNumber$007C_$007C(x);\n if (activePatternResult_1 != null) {\n const number = activePatternResult_1;\n return new Json(0, [number]);\n }\n else {\n const activePatternResult_2 = $007CNativeBool$007C_$007C(x);\n if (activePatternResult_2 != null) {\n const value = activePatternResult_2;\n return new Json(2, [value]);\n }\n else if ($007CNull$007C_$007C(x) != null) {\n return new Json(3, []);\n }\n else {\n const activePatternResult_4 = $007CNativeArray$007C_$007C(x);\n if (activePatternResult_4 != null) {\n const arr = activePatternResult_4;\n return new Json(4, [ofArray(map_2(SimpleJson_parseNative$0027, arr))]);\n }\n else {\n const activePatternResult_5 = $007CNativeObject$007C_$007C(x);\n if (activePatternResult_5 != null) {\n const object = value_5(activePatternResult_5);\n return new Json(5, [ofList(toList_1(delay(() => map_3((key) => [key, SimpleJson_parseNative$0027(object[key])], Object.keys(object)))), {\n Compare: comparePrimitives,\n })]);\n }\n else {\n return new Json(3, []);\n }\n }\n }\n }\n }\n}\n\n/**\n * Parses and converts the input string to Json using Javascript's native parsing capabilities\n */\nexport function SimpleJson_parseNative(input) {\n return SimpleJson_parseNative$0027(JSON.parse(input));\n}\n\nexport function SimpleJson_tryParseNative(input) {\n try {\n return SimpleJson_parseNative(input);\n }\n catch (ex) {\n return undefined;\n }\n}\n\n/**\n * Tries to convert an object literal to the Json by calling JSON.stringify on the object first\n */\nexport function SimpleJson_fromObjectLiteral(x) {\n try {\n return SimpleJson_parseNative$0027(x);\n }\n catch (matchValue) {\n return undefined;\n }\n}\n\n/**\n * Transforms all keys of the objects within the Json structure\n */\nexport function SimpleJson_mapKeys(f, _arg) {\n switch (_arg.tag) {\n case 5:\n return new Json(5, [ofList(map_1((tupledArg) => [f(tupledArg[0]), SimpleJson_mapKeys(f, tupledArg[1])], toList(_arg.fields[0])), {\n Compare: comparePrimitives,\n })]);\n case 4:\n return new Json(4, [map_1((_arg_1) => SimpleJson_mapKeys(f, _arg_1), _arg.fields[0])]);\n default:\n return _arg;\n }\n}\n\n/**\n * Transforms object values recursively using function `f` that takes the key and value of the object and returns a new value\n */\nexport function SimpleJson_mapbyKey(f, _arg) {\n switch (_arg.tag) {\n case 5:\n return new Json(5, [ofList(map_1((tupledArg) => {\n const key = tupledArg[0];\n return [key, f(key, tupledArg[1])];\n }, toList(_arg.fields[0])), {\n Compare: comparePrimitives,\n })]);\n case 4:\n return new Json(4, [map_1((_arg_1) => SimpleJson_mapbyKey(f, _arg_1), _arg.fields[0])]);\n default:\n return _arg;\n }\n}\n\n/**\n * Transforms keys of object selectively by path segments\n */\nexport function SimpleJson_mapKeysByPath(f, json) {\n const mapKey = (xs, _arg) => {\n switch (_arg.tag) {\n case 5:\n return new Json(5, [ofList(map_1((tupledArg) => {\n const key = tupledArg[0];\n const value = tupledArg[1];\n const keyPath = concat([xs, singleton(key)]);\n const matchValue = f(keyPath);\n if (matchValue == null) {\n return [key, mapKey(keyPath, value)];\n }\n else {\n return [matchValue, mapKey(keyPath, value)];\n }\n }, toList(_arg.fields[0])), {\n Compare: comparePrimitives,\n })]);\n case 4:\n return new Json(4, [map_1(curry2(mapKey)(xs), _arg.fields[0])]);\n default:\n return _arg;\n }\n };\n return mapKey(empty(), json);\n}\n\nexport function SimpleJson_readPath(keys_mut, input_mut) {\n SimpleJson_readPath:\n while (true) {\n const keys = keys_mut, input = input_mut;\n let matchResult, dict, key, dict_1, firstKey, rest;\n if (!isEmpty(keys)) {\n if (isEmpty(tail(keys))) {\n if (input.tag === 5) {\n matchResult = 1;\n dict = input.fields[0];\n key = head(keys);\n }\n else {\n matchResult = 3;\n }\n }\n else if (input.tag === 5) {\n matchResult = 2;\n dict_1 = input.fields[0];\n firstKey = head(keys);\n rest = tail(keys);\n }\n else {\n matchResult = 3;\n }\n }\n else {\n matchResult = 0;\n }\n switch (matchResult) {\n case 0:\n return undefined;\n case 1:\n return tryFind(key, dict);\n case 2: {\n const matchValue_1 = tryFind(firstKey, dict_1);\n let matchResult_1, nextDict;\n if (matchValue_1 != null) {\n if (matchValue_1.tag === 5) {\n matchResult_1 = 0;\n nextDict = matchValue_1.fields[0];\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0: {\n keys_mut = rest;\n input_mut = (new Json(5, [nextDict]));\n continue SimpleJson_readPath;\n }\n default:\n return undefined;\n }\n }\n default:\n return undefined;\n }\n break;\n }\n}\n\n","import { some } from \"../fable-library-js.4.19.3/Option.js\";\n\nexport function $007CNativeString$007C_$007C(x) {\n if (typeof (x) === 'string') {\n return x;\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CNativeBool$007C_$007C(x) {\n if (typeof (x) === 'boolean') {\n return x;\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CNativeNumber$007C_$007C(x) {\n if (typeof (x) === 'number') {\n return x;\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CNativeObject$007C_$007C(x) {\n if (typeof (x) === 'object') {\n return some(x);\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CNull$007C_$007C(x) {\n if (x == null) {\n return some(x);\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CNativeArray$007C_$007C(x) {\n if (Array.isArray(x)) {\n return x;\n }\n else {\n return undefined;\n }\n}\n\n","/**\n * DateTimeOffset functions.\n *\n * Note: DateOffset instances are always DateObjects in local\n * timezone (because JS dates are all kinds of messed up).\n * A local date returns UTC epoch when `.getTime()` is called.\n *\n * However, this means that in order to construct an UTC date\n * from a DateOffset with offset of +5 hours, you first need\n * to subtract those 5 hours, than add the \"local\" offset.\n * As said, all kinds of messed up.\n *\n * Basically; invariant: date.getTime() always return UTC time.\n */\nimport { fromFloat64, toFloat64 } from \"./BigInt.js\";\nimport DateTime, { create as createDate, dateOffsetToString, daysInMonth, parseRaw, ticksToUnixEpochMilliseconds, unixEpochMillisecondsToTicks } from \"./Date.js\";\nimport { compareDates, padWithZeros } from \"./Util.js\";\nexport default function DateTimeOffset(value, offset) {\n checkOffsetInRange(offset);\n const d = new Date(value);\n d.offset = offset != null ? offset : new Date().getTimezoneOffset() * -60000;\n return d;\n}\nexport function offset(value) {\n return value.offset || 0;\n}\nfunction checkOffsetInRange(offset) {\n if (offset != null && offset !== 0) {\n if (offset % 60000 !== 0) {\n throw new Error(\"Offset must be specified in whole minutes.\");\n }\n if (Math.abs(offset / 3600000) > 14) {\n throw new Error(\"Offset must be within plus or minus 14 hours.\");\n }\n }\n}\nexport function fromDate(date, offset) {\n let offset2 = 0;\n switch (date.kind) {\n case 1 /* DateKind.UTC */:\n if (offset != null && offset !== 0) {\n throw new Error(\"The UTC Offset for Utc DateTime instances must be 0.\");\n }\n offset2 = 0;\n break;\n case 2 /* DateKind.Local */:\n offset2 = date.getTimezoneOffset() * -60000;\n if (offset != null && offset !== offset2) {\n throw new Error(\"The UTC Offset of the local dateTime parameter does not match the offset argument.\");\n }\n break;\n case 0 /* DateKind.Unspecified */:\n default:\n if (offset == null) {\n offset2 = date.getTimezoneOffset() * -60000;\n }\n else {\n offset2 = offset;\n }\n break;\n }\n return DateTimeOffset(date.getTime(), offset2);\n}\nexport function fromTicks(ticks, offset) {\n const ms = ticksToUnixEpochMilliseconds(ticks) - offset;\n return DateTimeOffset(ms, offset);\n}\nexport function fromUnixTimeMilliseconds(ms) {\n return DateTimeOffset(toFloat64(ms), 0);\n}\nexport function fromUnixTimeSeconds(seconds) {\n return DateTimeOffset(toFloat64(seconds * 1000n), 0);\n}\nexport function getUtcTicks(date) {\n return unixEpochMillisecondsToTicks(date.getTime(), 0);\n}\nexport function minValue() {\n // This is \"0001-01-01T00:00:00.000Z\", actual JS min value is -8640000000000000\n return DateTimeOffset(-62135596800000, 0);\n}\nexport function maxValue() {\n // This is \"9999-12-31T23:59:59.999Z\", actual JS max value is 8640000000000000\n return DateTimeOffset(253402300799999, 0);\n}\nexport function parse(str) {\n const [date, offsetMatch] = parseRaw(str);\n const offset = offsetMatch == null\n ? date.getTimezoneOffset() * -60000\n : (offsetMatch === \"Z\" ? 0 : offsetMatch * 60000);\n return DateTimeOffset(date.getTime(), offset);\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch (_err) {\n return false;\n }\n}\nexport function create(year, month, day, h, m, s, ms, offset) {\n if (offset == null) {\n offset = ms;\n ms = 0;\n }\n checkOffsetInRange(offset);\n let date;\n if (offset === 0) {\n date = new Date(Date.UTC(year, month - 1, day, h, m, s, ms));\n if (year <= 99) {\n date.setUTCFullYear(year, month - 1, day);\n }\n }\n else {\n const str = padWithZeros(year, 4) + \"-\" +\n padWithZeros(month, 2) + \"-\" +\n padWithZeros(day, 2) + \"T\" +\n padWithZeros(h, 2) + \":\" +\n padWithZeros(m, 2) + \":\" +\n padWithZeros(s, 2) + \".\" +\n padWithZeros(ms, 3) +\n dateOffsetToString(offset);\n date = new Date(str);\n }\n const dateValue = date.getTime();\n if (isNaN(dateValue)) {\n throw new Error(\"The parameters describe an unrepresentable Date\");\n }\n return DateTimeOffset(dateValue, offset);\n}\nexport function now() {\n const date = new Date();\n const offset = date.getTimezoneOffset() * -60000;\n return DateTimeOffset(date.getTime(), offset);\n}\nexport function utcNow() {\n const date = now();\n return DateTimeOffset(date.getTime(), 0);\n}\nexport function toUniversalTime(date) {\n return DateTime(date.getTime(), 1 /* DateKind.UTC */);\n}\nexport function toLocalTime(date) {\n return DateTime(date.getTime(), 2 /* DateKind.Local */);\n}\nexport function timeOfDay(d) {\n const d2 = new Date(d.getTime() + (d.offset ?? 0));\n return d2.getUTCHours() * 3600000\n + d2.getUTCMinutes() * 60000\n + d2.getUTCSeconds() * 1000\n + d2.getUTCMilliseconds();\n}\nexport function date(d) {\n const d2 = new Date(d.getTime() + (d.offset ?? 0));\n return createDate(d2.getUTCFullYear(), d2.getUTCMonth() + 1, d2.getUTCDate(), 0, 0, 0, 0);\n}\nexport function day(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCDate();\n}\nexport function hour(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCHours();\n}\nexport function millisecond(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCMilliseconds();\n}\nexport function minute(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCMinutes();\n}\nexport function month(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCMonth() + 1;\n}\nexport function second(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCSeconds();\n}\nexport function year(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCFullYear();\n}\nexport function dayOfWeek(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCDay();\n}\nexport function dayOfYear(d) {\n const d2 = new Date(d.getTime() + (d.offset ?? 0));\n const _year = d2.getUTCFullYear();\n const _month = d2.getUTCMonth() + 1;\n let _day = d2.getUTCDate();\n for (let i = 1; i < _month; i++) {\n _day += daysInMonth(_year, i);\n }\n return _day;\n}\nexport function add(d, ts) {\n return DateTimeOffset(d.getTime() + ts, (d.offset ?? 0));\n}\nexport function addDays(d, v) {\n return add(d, v * 86400000);\n}\nexport function addHours(d, v) {\n return add(d, v * 3600000);\n}\nexport function addMinutes(d, v) {\n return add(d, v * 60000);\n}\nexport function addSeconds(d, v) {\n return add(d, v * 1000);\n}\nexport function addMilliseconds(d, v) {\n return add(d, v);\n}\nexport function addTicks(d, v) {\n return add(d, toFloat64(v / 10000n));\n}\nexport function addYears(d, v) {\n const newMonth = d.getUTCMonth() + 1;\n const newYear = d.getUTCFullYear() + v;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, d.getUTCDate());\n return create(newYear, newMonth, newDay, d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds(), (d.offset ?? 0));\n}\nexport function addMonths(d, v) {\n const d2 = new Date(d.getTime() + (d.offset ?? 0));\n let newMonth = d2.getUTCMonth() + 1 + v;\n let newMonth_ = 0;\n let yearOffset = 0;\n if (newMonth > 12) {\n newMonth_ = newMonth % 12;\n yearOffset = Math.floor(newMonth / 12);\n newMonth = newMonth_;\n }\n else if (newMonth < 1) {\n newMonth_ = 12 + newMonth % 12;\n yearOffset = Math.floor(newMonth / 12) + (newMonth_ === 12 ? -1 : 0);\n newMonth = newMonth_;\n }\n const newYear = d2.getUTCFullYear() + yearOffset;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, d2.getUTCDate());\n return create(newYear, newMonth, newDay, d2.getUTCHours(), d2.getUTCMinutes(), d2.getUTCSeconds(), d2.getUTCMilliseconds(), (d.offset ?? 0));\n}\nexport function subtract(d, that) {\n return typeof that === \"number\"\n ? DateTimeOffset(d.getTime() - that, (d.offset ?? 0))\n : d.getTime() - that.getTime();\n}\nexport function equals(d1, d2) {\n return d1.getTime() === d2.getTime();\n}\nexport function equalsExact(d1, d2) {\n return d1.getTime() === d2.getTime() && d1.offset === d2.offset;\n}\nexport function compare(d1, d2) {\n return compareDates(d1, d2);\n}\nexport const compareTo = compare;\nexport function op_Addition(x, y) {\n return add(x, y);\n}\nexport function op_Subtraction(x, y) {\n return subtract(x, y);\n}\nexport function toOffset(d, offset) {\n return DateTimeOffset(d.getTime(), offset);\n}\nexport function toUnixTimeMilliseconds(d) {\n return fromFloat64(d.getTime());\n}\nexport function toUnixTimeSeconds(d) {\n return fromFloat64(d.getTime() / 1000.0);\n}\n","import { DateTime, getTicks, dayOfYear as Date_dayOfYear, year as Date_year, month as Date_month, day as Date_day, daysInMonth as Date_daysInMonth, ticksToUnixEpochMilliseconds } from \"./Date.js\";\nimport { padWithZeros } from \"./Util.js\";\nexport function fromUnixMilliseconds(value) {\n return DateTime(value, 1 /* DateKind.UTC */);\n}\nexport function create(year, month, day) {\n const d = fromUnixMilliseconds(Date.UTC(year, month - 1, day));\n if (year <= 99) {\n d.setUTCFullYear(year);\n }\n return d;\n}\nexport function maxValue() {\n // This is \"9999-12-31T00:00:00.000Z\"\n return fromUnixMilliseconds(253402214400000);\n}\nexport function minValue() {\n // This is \"0001-01-01T00:00:00.000Z\"\n return fromUnixMilliseconds(-62135596800000);\n}\nexport function dayNumber(d) {\n return Number((getTicks(d) / 864000000000n));\n}\nexport function fromDayNumber(dayNumber) {\n const ticks = 864000000000n * BigInt(dayNumber);\n return fromUnixMilliseconds(ticksToUnixEpochMilliseconds(ticks));\n}\nexport function fromDateTime(d) {\n return create(Date_year(d), Date_month(d), Date_day(d));\n}\nexport function day(d) {\n return d.getUTCDate();\n}\nexport function month(d) {\n return d.getUTCMonth() + 1;\n}\nexport function year(d) {\n return d.getUTCFullYear();\n}\nexport function dayOfWeek(d) {\n return d.getUTCDay();\n}\nexport function dayOfYear(d) {\n return Date_dayOfYear(d);\n}\nexport function toDateTime(d, time, kind = 0 /* DateKind.Unspecified */) {\n return DateTime(d.getTime() + time + (kind !== 1 /* DateKind.UTC */ ? d.getTimezoneOffset() : 0) * 60000, kind);\n}\nexport function toString(d, format = \"d\", _provider) {\n if ([\"d\", \"o\", \"O\"].indexOf(format) === -1) {\n throw new Error(\"Custom formats are not supported\");\n }\n const y = padWithZeros(year(d), 4);\n const m = padWithZeros(month(d), 2);\n const dd = padWithZeros(day(d), 2);\n return format === \"d\" ? `${m}/${dd}/${y}` : `${y}-${m}-${dd}`;\n}\nexport function parse(str) {\n function fail() {\n throw new Error(`String '${str}' was not recognized as a valid DateOnly.`);\n }\n // Allowed separators: . , / -\n // TODO whitespace alone as the separator\n //\n // Whitespace around separators\n //\n // Allowed format types:\n // yyyy/mm/dd\n // mm/dd/yyyy\n // mm/dd\n // mm/yyyy\n // yyyy/mm\n const r = /^\\s*(\\d{1,4})(?:\\s*[.,-\\/]\\s*(\\d{1,2}))?\\s*[.,-\\/]\\s*(\\d{1,4})\\s*$/.exec(str);\n if (r != null) {\n let y = 0;\n let m = 0;\n let d = 1;\n if (r[2] == null) {\n if (r[1].length < 3) {\n if (r[3].length < 3) {\n // 12/30 = December 30, {CurrentYear}\n y = new Date().getFullYear();\n m = +r[1];\n d = +r[3];\n }\n else {\n // 12/2000 = December 1, 2000\n m = +r[1];\n y = +r[3];\n }\n }\n else {\n if (r[3].length > 2)\n fail();\n // 2000/12 = December 1, 2000\n y = +r[1];\n m = +r[3];\n }\n }\n else {\n // 2000/1/30 or 1/30/2000\n const yearFirst = r[1].length > 2;\n const yTmp = r[yearFirst ? 1 : 3];\n y = +yTmp;\n // year 0-29 is 2000-2029, 30-99 is 1930-1999\n if (yTmp.length < 3)\n y += y >= 30 ? 1900 : 2000;\n m = +r[yearFirst ? 2 : 1];\n d = +r[yearFirst ? 3 : 2];\n }\n if (y > 0 && m > 0 && m < 13 && d > 0 && d <= Date_daysInMonth(y, m))\n return create(y, m, d);\n }\n return fail();\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch {\n return false;\n }\n}\n","import { trim } from \"./String.js\";\n// RFC 4122 compliant. From https://stackoverflow.com/a/13653180/3922220\n// const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;\n// Relax GUID parsing, see #1637\nconst guidRegex = /^[\\(\\{]{0,2}[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[\\)\\}]{0,2}$/;\nconst guidRegexNoHyphen = /^([0-9a-f]{8})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{12})$/;\nconst guidRegexHex = /^\\{0x[0-9a-f]{8},(0x[0-9a-f]{4},){2}\\{(0x[0-9a-f]{2},){7}0x[0-9a-f]{2}\\}\\}$/;\nconst guidHexCaptures = /^([0-9a-f]{8})-(([0-9a-f]{4})-)(([0-9a-f]{4})-)([0-9a-f]{2})([0-9a-f]{2})-([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/;\nexport function toString(str, format, _provider) {\n if (format && format?.length > 0) {\n switch (format) {\n case \"N\":\n return str.replace(/-/g, '');\n case \"D\":\n return str;\n case \"B\":\n return \"{\" + str + \"}\";\n case \"P\":\n return \"(\" + str + \")\";\n case \"X\":\n return str.replace(guidHexCaptures, \"{0x$1,0x$3,0x$5,{0x$6,0x$7,0x$8,0x$9,0x$10,0x$11,0x$12,0x$13}}\");\n default:\n throw new Error(\"Unrecognized Guid print format\");\n }\n }\n else {\n return str;\n }\n}\n/** Validates UUID as specified in RFC4122 (versions 1-5). */\nexport function parse(str) {\n function hyphenateGuid(str) {\n return str.replace(guidRegexNoHyphen, \"$1-$2-$3-$4-$5\");\n }\n const wsTrimAndLowered = str.trim().toLowerCase();\n if (guidRegex.test(wsTrimAndLowered)) {\n return trim(wsTrimAndLowered, \"{\", \"}\", \"(\", \")\");\n }\n else if (guidRegexNoHyphen.test(wsTrimAndLowered)) {\n return hyphenateGuid(wsTrimAndLowered);\n }\n else if (guidRegexHex.test(wsTrimAndLowered)) {\n return hyphenateGuid(wsTrimAndLowered.replace(/[\\{\\},]|0x/g, ''));\n }\n else {\n throw new Error(\"Guid should contain 32 digits with 4 dashes: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n }\n}\nexport function tryParse(str, defValue) {\n try {\n defValue.contents = parse(str);\n return true;\n }\n catch {\n return false;\n }\n}\n// From https://gist.github.com/LeverOne/1308368\nexport function newGuid() {\n let b = \"\";\n for (let a = 0; a++ < 36;) {\n b += a * 51 & 52\n ? (a ^ 15 ? 8 ^ Math.random() * (a ^ 20 ? 16 : 4) : 4).toString(16)\n : \"-\";\n }\n return b;\n}\n// Maps for number <-> hex string conversion\nlet _convertMapsInitialized = false;\nlet _byteToHex;\nlet _hexToByte;\nfunction initConvertMaps() {\n _byteToHex = new Array(256);\n _hexToByte = {};\n for (let i = 0; i < 256; i++) {\n _byteToHex[i] = (i + 0x100).toString(16).substr(1);\n _hexToByte[_byteToHex[i]] = i;\n }\n _convertMapsInitialized = true;\n}\n/** Parse a UUID into it's component bytes */\n// Adapted from https://github.com/zefferus/uuid-parse\nexport function guidToArray(s) {\n if (!_convertMapsInitialized) {\n initConvertMaps();\n }\n let i = 0;\n const buf = new Uint8Array(16);\n s.toLowerCase().replace(/[0-9a-f]{2}/g, ((oct) => {\n switch (i) {\n // .NET saves first three byte groups with different endianness\n // See https://stackoverflow.com/a/16722909/3922220\n case 0:\n case 1:\n case 2:\n case 3:\n buf[3 - i++] = _hexToByte[oct];\n break;\n case 4:\n case 5:\n buf[9 - i++] = _hexToByte[oct];\n break;\n case 6:\n case 7:\n buf[13 - i++] = _hexToByte[oct];\n break;\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n buf[i++] = _hexToByte[oct];\n break;\n }\n }));\n // Zero out remaining bytes if string was short\n while (i < 16) {\n buf[i++] = 0;\n }\n return buf;\n}\n/** Convert UUID byte array into a string */\nexport function arrayToGuid(buf) {\n if (buf.length !== 16) {\n throw new Error(\"Byte array for GUID must be exactly 16 bytes long\");\n }\n if (!_convertMapsInitialized) {\n initConvertMaps();\n }\n const guid = _byteToHex[buf[3]] + _byteToHex[buf[2]] +\n _byteToHex[buf[1]] + _byteToHex[buf[0]] + \"-\" +\n _byteToHex[buf[5]] + _byteToHex[buf[4]] + \"-\" +\n _byteToHex[buf[7]] + _byteToHex[buf[6]] + \"-\" +\n _byteToHex[buf[8]] + _byteToHex[buf[9]] + \"-\" +\n _byteToHex[buf[10]] + _byteToHex[buf[11]] +\n _byteToHex[buf[12]] + _byteToHex[buf[13]] +\n _byteToHex[buf[14]] + _byteToHex[buf[15]];\n return guid;\n}\n","const littleEndian = true;\nexport function isLittleEndian() {\n return littleEndian;\n}\nexport function getBytesBoolean(value) {\n const bytes = new Uint8Array(1);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint8(0, value ? 1 : 0);\n return bytes;\n}\nexport function getBytesChar(value) {\n const bytes = new Uint8Array(2);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint16(0, value.charCodeAt(0), littleEndian);\n return bytes;\n}\nexport function getBytesInt16(value) {\n const bytes = new Uint8Array(2);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setInt16(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesInt32(value) {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setInt32(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesInt64(value) {\n const bytes = new Uint8Array(8);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setBigInt64(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesUInt16(value) {\n const bytes = new Uint8Array(2);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint16(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesUInt32(value) {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint32(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesUInt64(value) {\n const bytes = new Uint8Array(8);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setBigUint64(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesSingle(value) {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setFloat32(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesDouble(value) {\n const bytes = new Uint8Array(8);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setFloat64(0, value, littleEndian);\n return bytes;\n}\nexport function int64BitsToDouble(value) {\n const buffer = new ArrayBuffer(8);\n const view = new DataView(buffer);\n view.setBigInt64(0, value, littleEndian);\n return view.getFloat64(0, littleEndian);\n}\nexport function doubleToInt64Bits(value) {\n const buffer = new ArrayBuffer(8);\n const view = new DataView(buffer);\n view.setFloat64(0, value, littleEndian);\n return view.getBigInt64(0, littleEndian);\n}\nexport function toBoolean(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getUint8(offset) === 1 ? true : false;\n}\nexport function toChar(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n const code = view.getUint16(offset, littleEndian);\n return String.fromCharCode(code);\n}\nexport function toInt16(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getInt16(offset, littleEndian);\n}\nexport function toInt32(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getInt32(offset, littleEndian);\n}\nexport function toInt64(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getBigInt64(offset, littleEndian);\n}\nexport function toUInt16(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getUint16(offset, littleEndian);\n}\nexport function toUInt32(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getUint32(offset, littleEndian);\n}\nexport function toUInt64(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getBigUint64(offset, littleEndian);\n}\nexport function toSingle(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, littleEndian);\n}\nexport function toDouble(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, littleEndian);\n}\nexport function toString(bytes, offset, count) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n let buffer = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);\n if (offset != null && count != null) {\n buffer = buffer.subarray(offset, offset + count);\n }\n else if (offset != null) {\n buffer = buffer.subarray(offset);\n }\n return Array.from(buffer).map((b) => (\"0\" + b.toString(16)).slice(-2)).join(\"-\");\n}\n","import { Union, Record } from \"../fable-library-js.4.19.3/Types.js\";\nimport { union_type, tuple_type, lambda_type, unit_type, array_type, record_type, class_type, string_type } from \"../fable-library-js.4.19.3/Reflection.js\";\n\nexport class RecordField extends Record {\n constructor(FieldName, FieldType, PropertyInfo) {\n super();\n this.FieldName = FieldName;\n this.FieldType = FieldType;\n this.PropertyInfo = PropertyInfo;\n }\n}\n\nexport function RecordField_$reflection() {\n return record_type(\"Fable.SimpleJson.RecordField\", [], RecordField, () => [[\"FieldName\", string_type], [\"FieldType\", TypeInfo_$reflection()], [\"PropertyInfo\", class_type(\"System.Reflection.PropertyInfo\")]]);\n}\n\nexport class UnionCase extends Record {\n constructor(CaseName, CaseTypes, Info) {\n super();\n this.CaseName = CaseName;\n this.CaseTypes = CaseTypes;\n this.Info = Info;\n }\n}\n\nexport function UnionCase_$reflection() {\n return record_type(\"Fable.SimpleJson.UnionCase\", [], UnionCase, () => [[\"CaseName\", string_type], [\"CaseTypes\", array_type(TypeInfo_$reflection())], [\"Info\", class_type(\"Microsoft.FSharp.Reflection.UnionCaseInfo\")]]);\n}\n\nexport class TypeInfo extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Unit\", \"Char\", \"String\", \"UInt16\", \"UInt32\", \"UInt64\", \"Int32\", \"Bool\", \"Float32\", \"Float\", \"Decimal\", \"Short\", \"Long\", \"Byte\", \"SByte\", \"DateTime\", \"DateTimeOffset\", \"DateOnly\", \"TimeOnly\", \"BigInt\", \"TimeSpan\", \"Guid\", \"Uri\", \"Object\", \"Any\", \"Async\", \"Promise\", \"Option\", \"List\", \"Set\", \"Array\", \"Seq\", \"Tuple\", \"Map\", \"Dictionary\", \"ResizeArray\", \"HashSet\", \"Func\", \"Enum\", \"Record\", \"Union\"];\n }\n}\n\nexport function TypeInfo_$reflection() {\n return union_type(\"Fable.SimpleJson.TypeInfo\", [], TypeInfo, () => [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [[\"Item\", lambda_type(unit_type, class_type(\"System.Type\"))]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, array_type(TypeInfo_$reflection()))]], [[\"Item\", lambda_type(unit_type, tuple_type(TypeInfo_$reflection(), TypeInfo_$reflection()))]], [[\"Item\", lambda_type(unit_type, tuple_type(TypeInfo_$reflection(), TypeInfo_$reflection(), class_type(\"System.Type\")))]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, array_type(TypeInfo_$reflection()))]], [[\"Item\", lambda_type(unit_type, tuple_type(TypeInfo_$reflection(), class_type(\"System.Type\")))]], [[\"Item\", lambda_type(unit_type, tuple_type(array_type(RecordField_$reflection()), class_type(\"System.Type\")))]], [[\"Item\", lambda_type(unit_type, tuple_type(array_type(UnionCase_$reflection()), class_type(\"System.Type\")))]]]);\n}\n\n","import { equals } from \"./Util.js\";\nimport { Union } from \"./Types.js\";\nconst CaseRules = {\n None: 0,\n LowerFirst: 1,\n SnakeCase: 2,\n SnakeCaseAllCaps: 3,\n KebabCase: 4,\n};\nfunction dashify(str, separator) {\n return str.replace(/[a-z]?[A-Z]/g, (m) => m.length === 1\n ? m.toLowerCase()\n : m.charAt(0) + separator + m.charAt(1).toLowerCase());\n}\nfunction changeCase(str, caseRule) {\n switch (caseRule) {\n case CaseRules.LowerFirst:\n return str.charAt(0).toLowerCase() + str.slice(1);\n case CaseRules.SnakeCase:\n return dashify(str, \"_\");\n case CaseRules.SnakeCaseAllCaps:\n return dashify(str, \"_\").toUpperCase();\n case CaseRules.KebabCase:\n return dashify(str, \"-\");\n case CaseRules.None:\n default:\n return str;\n }\n}\nexport function keyValueList(fields, caseRule = CaseRules.None) {\n const obj = {};\n const definedCaseRule = caseRule;\n function fail(kvPair) {\n throw new Error(\"Cannot infer key and value of \" + String(kvPair));\n }\n function assign(key, caseRule, value) {\n key = changeCase(key, caseRule);\n obj[key] = value;\n }\n for (let kvPair of fields) {\n let caseRule = CaseRules.None;\n if (kvPair == null) {\n fail(kvPair);\n }\n // Deflate unions and use the defined case rule\n if (kvPair instanceof Union) {\n const name = kvPair.cases()[kvPair.tag];\n kvPair = kvPair.fields.length === 0 ? name : [name].concat(kvPair.fields);\n caseRule = definedCaseRule;\n }\n if (Array.isArray(kvPair)) {\n switch (kvPair.length) {\n case 0:\n fail(kvPair);\n break;\n case 1:\n assign(kvPair[0], caseRule, true);\n break;\n case 2:\n const value = kvPair[1];\n assign(kvPair[0], caseRule, value);\n break;\n default:\n assign(kvPair[0], caseRule, kvPair.slice(1));\n }\n }\n else if (typeof kvPair === \"string\") {\n assign(kvPair, caseRule, true);\n }\n else {\n fail(kvPair);\n }\n }\n return obj;\n}\n// TODO: Move these methods to Map and Set modules\nexport function containsValue(v, map) {\n for (const kv of map) {\n if (equals(v, kv[1])) {\n return true;\n }\n }\n return false;\n}\nexport function tryGetValue(map, key, defaultValue) {\n if (map.has(key)) {\n defaultValue.contents = map.get(key);\n return true;\n }\n return false;\n}\nexport function addToSet(v, set) {\n if (set.has(v)) {\n return false;\n }\n set.add(v);\n return true;\n}\nexport function tryAddToDict(dict, k, v) {\n if (dict.has(k)) {\n return false;\n }\n dict.set(k, v);\n return true;\n}\nexport function addToDict(dict, k, v) {\n if (dict.has(k)) {\n throw new Error(\"An item with the same key has already been added. Key: \" + k);\n }\n dict.set(k, v);\n}\nexport function getItemFromDict(map, key) {\n if (map.has(key)) {\n return map.get(key);\n }\n else {\n throw new Error(`The given key '${key}' was not present in the dictionary.`);\n }\n}\nexport function getItemFromDictOrCreate(map, key, createValue) {\n if (map.has(key)) {\n return map.get(key);\n }\n const value = createValue(key);\n map.set(key, value);\n return value;\n}\n","import { disposeSafe, defaultOf, equals, toIterator, getEnumerator } from \"./Util.js\";\nimport { iterate, map, delay, toArray, iterateIndexed, concat } from \"./Seq.js\";\nimport { value as value_1 } from \"./Option.js\";\nimport { setItem } from \"./Array.js\";\nimport { FSharpRef } from \"./Types.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { getItemFromDict, tryGetValue } from \"./MapUtil.js\";\nimport { format } from \"./String.js\";\nexport class Dictionary {\n constructor(pairs, comparer) {\n const this$ = new FSharpRef(defaultOf());\n this.comparer = comparer;\n this$.contents = this;\n this.hashMap = (new Map([]));\n this[\"init@9\"] = 1;\n const enumerator = getEnumerator(pairs);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const pair = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n Dictionary__Add_5BDDA1(this$.contents, pair[0], pair[1]);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n }\n get [Symbol.toStringTag]() {\n return \"Dictionary\";\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const this$ = this;\n return getEnumerator(this$);\n }\n GetEnumerator() {\n const this$ = this;\n return getEnumerator(concat(this$.hashMap.values()));\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.Generic.ICollection`1.Add2B595\"(item) {\n const this$ = this;\n Dictionary__Add_5BDDA1(this$, item[0], item[1]);\n }\n \"System.Collections.Generic.ICollection`1.Clear\"() {\n const this$ = this;\n Dictionary__Clear(this$);\n }\n \"System.Collections.Generic.ICollection`1.Contains2B595\"(item) {\n const this$ = this;\n const matchValue = Dictionary__TryFind_2B595(this$, item[0]);\n let matchResult, p_1;\n if (matchValue != null) {\n if (equals(value_1(matchValue)[1], item[1])) {\n matchResult = 0;\n p_1 = value_1(matchValue);\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return true;\n default:\n return false;\n }\n }\n \"System.Collections.Generic.ICollection`1.CopyToZ3B4C077E\"(array, arrayIndex) {\n const this$ = this;\n iterateIndexed((i, e) => {\n setItem(array, arrayIndex + i, e);\n }, this$);\n }\n \"System.Collections.Generic.ICollection`1.get_Count\"() {\n const this$ = this;\n return Dictionary__get_Count(this$) | 0;\n }\n \"System.Collections.Generic.ICollection`1.get_IsReadOnly\"() {\n return false;\n }\n \"System.Collections.Generic.ICollection`1.Remove2B595\"(item) {\n const this$ = this;\n const matchValue = Dictionary__TryFind_2B595(this$, item[0]);\n if (matchValue != null) {\n if (equals(value_1(matchValue)[1], item[1])) {\n Dictionary__Remove_2B595(this$, item[0]);\n }\n return true;\n }\n else {\n return false;\n }\n }\n \"System.Collections.Generic.IDictionary`2.Add5BDDA1\"(key, value) {\n const this$ = this;\n Dictionary__Add_5BDDA1(this$, key, value);\n }\n \"System.Collections.Generic.IDictionary`2.ContainsKey2B595\"(key) {\n const this$ = this;\n return Dictionary__ContainsKey_2B595(this$, key);\n }\n \"System.Collections.Generic.IDictionary`2.get_Item2B595\"(key) {\n const this$ = this;\n return Dictionary__get_Item_2B595(this$, key);\n }\n \"System.Collections.Generic.IDictionary`2.set_Item5BDDA1\"(key, v) {\n const this$ = this;\n Dictionary__set_Item_5BDDA1(this$, key, v);\n }\n \"System.Collections.Generic.IDictionary`2.get_Keys\"() {\n const this$ = this;\n return toArray(delay(() => map((pair) => pair[0], this$)));\n }\n \"System.Collections.Generic.IDictionary`2.Remove2B595\"(key) {\n const this$ = this;\n return Dictionary__Remove_2B595(this$, key);\n }\n \"System.Collections.Generic.IDictionary`2.TryGetValue6DC89625\"(key, value) {\n const this$ = this;\n const matchValue = Dictionary__TryFind_2B595(this$, key);\n if (matchValue != null) {\n const pair = value_1(matchValue);\n value.contents = pair[1];\n return true;\n }\n else {\n return false;\n }\n }\n \"System.Collections.Generic.IDictionary`2.get_Values\"() {\n const this$ = this;\n return toArray(delay(() => map((pair) => pair[1], this$)));\n }\n get size() {\n const this$ = this;\n return Dictionary__get_Count(this$) | 0;\n }\n clear() {\n const this$ = this;\n Dictionary__Clear(this$);\n }\n delete(k) {\n const this$ = this;\n return Dictionary__Remove_2B595(this$, k);\n }\n entries() {\n const this$ = this;\n return map((p) => [p[0], p[1]], this$);\n }\n get(k) {\n const this$ = this;\n return Dictionary__get_Item_2B595(this$, k);\n }\n has(k) {\n const this$ = this;\n return Dictionary__ContainsKey_2B595(this$, k);\n }\n keys() {\n const this$ = this;\n return map((p) => p[0], this$);\n }\n set(k, v) {\n const this$ = this;\n Dictionary__set_Item_5BDDA1(this$, k, v);\n return this$;\n }\n values() {\n const this$ = this;\n return map((p) => p[1], this$);\n }\n forEach(f, thisArg) {\n const this$ = this;\n iterate((p) => {\n f(p[1], p[0], this$);\n }, this$);\n }\n}\nexport function Dictionary_$reflection(gen0, gen1) {\n return class_type(\"Fable.Collections.Dictionary\", [gen0, gen1], Dictionary);\n}\nexport function Dictionary_$ctor_6623D9B3(pairs, comparer) {\n return new Dictionary(pairs, comparer);\n}\nfunction Dictionary__TryFindIndex_2B595(this$, k) {\n const h = this$.comparer.GetHashCode(k) | 0;\n let matchValue;\n let outArg = defaultOf();\n matchValue = [tryGetValue(this$.hashMap, h, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return [true, h, matchValue[1].findIndex((pair) => this$.comparer.Equals(k, pair[0]))];\n }\n else {\n return [false, h, -1];\n }\n}\nexport function Dictionary__TryFind_2B595(this$, k) {\n const matchValue = Dictionary__TryFindIndex_2B595(this$, k);\n let matchResult;\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return getItemFromDict(this$.hashMap, matchValue[1])[matchValue[2]];\n default:\n return undefined;\n }\n}\nexport function Dictionary__get_Comparer(this$) {\n return this$.comparer;\n}\nexport function Dictionary__Clear(this$) {\n this$.hashMap.clear();\n}\nexport function Dictionary__get_Count(this$) {\n let count = 0;\n let enumerator = getEnumerator(this$.hashMap.values());\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const pairs = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n count = ((count + pairs.length) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return count | 0;\n}\nexport function Dictionary__get_Item_2B595(this$, k) {\n const matchValue = Dictionary__TryFind_2B595(this$, k);\n if (matchValue != null) {\n return value_1(matchValue)[1];\n }\n else {\n throw new Error(\"The item was not found in collection\");\n }\n}\nexport function Dictionary__set_Item_5BDDA1(this$, k, v) {\n const matchValue = Dictionary__TryFindIndex_2B595(this$, k);\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n getItemFromDict(this$.hashMap, matchValue[1])[matchValue[2]] = [k, v];\n }\n else {\n const value = void (getItemFromDict(this$.hashMap, matchValue[1]).push([k, v]));\n }\n }\n else {\n this$.hashMap.set(matchValue[1], [[k, v]]);\n }\n}\nexport function Dictionary__Add_5BDDA1(this$, k, v) {\n const matchValue = Dictionary__TryFindIndex_2B595(this$, k);\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n throw new Error(format(\"An item with the same key has already been added. Key: {0}\", k));\n }\n else {\n const value = void (getItemFromDict(this$.hashMap, matchValue[1]).push([k, v]));\n }\n }\n else {\n this$.hashMap.set(matchValue[1], [[k, v]]);\n }\n}\nexport function Dictionary__ContainsKey_2B595(this$, k) {\n const matchValue = Dictionary__TryFindIndex_2B595(this$, k);\n let matchResult;\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return true;\n default:\n return false;\n }\n}\nexport function Dictionary__Remove_2B595(this$, k) {\n const matchValue = Dictionary__TryFindIndex_2B595(this$, k);\n let matchResult;\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n getItemFromDict(this$.hashMap, matchValue[1]).splice(matchValue[2], 1);\n return true;\n }\n default:\n return false;\n }\n}\n","import { disposeSafe, defaultOf, toIterator, getEnumerator } from \"./Util.js\";\nimport { iterate, map, iterateIndexed, concat } from \"./Seq.js\";\nimport { setItem } from \"./Array.js\";\nimport { some } from \"./Option.js\";\nimport { FSharpRef } from \"./Types.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { getItemFromDict, tryGetValue } from \"./MapUtil.js\";\nexport class HashSet {\n constructor(items, comparer) {\n const this$ = new FSharpRef(defaultOf());\n this.comparer = comparer;\n this$.contents = this;\n this.hashMap = (new Map([]));\n this[\"init@9\"] = 1;\n const enumerator = getEnumerator(items);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const item = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n HashSet__Add_2B595(this$.contents, item);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n }\n get [Symbol.toStringTag]() {\n return \"HashSet\";\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const this$ = this;\n return getEnumerator(this$);\n }\n GetEnumerator() {\n const this$ = this;\n return getEnumerator(concat(this$.hashMap.values()));\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.Generic.ICollection`1.Add2B595\"(item) {\n const this$ = this;\n HashSet__Add_2B595(this$, item);\n }\n \"System.Collections.Generic.ICollection`1.Clear\"() {\n const this$ = this;\n HashSet__Clear(this$);\n }\n \"System.Collections.Generic.ICollection`1.Contains2B595\"(item) {\n const this$ = this;\n return HashSet__Contains_2B595(this$, item);\n }\n \"System.Collections.Generic.ICollection`1.CopyToZ3B4C077E\"(array, arrayIndex) {\n const this$ = this;\n iterateIndexed((i, e) => {\n setItem(array, arrayIndex + i, e);\n }, this$);\n }\n \"System.Collections.Generic.ICollection`1.get_Count\"() {\n const this$ = this;\n return HashSet__get_Count(this$) | 0;\n }\n \"System.Collections.Generic.ICollection`1.get_IsReadOnly\"() {\n return false;\n }\n \"System.Collections.Generic.ICollection`1.Remove2B595\"(item) {\n const this$ = this;\n return HashSet__Remove_2B595(this$, item);\n }\n get size() {\n const this$ = this;\n return HashSet__get_Count(this$) | 0;\n }\n add(k) {\n const this$ = this;\n HashSet__Add_2B595(this$, k);\n return this$;\n }\n clear() {\n const this$ = this;\n HashSet__Clear(this$);\n }\n delete(k) {\n const this$ = this;\n return HashSet__Remove_2B595(this$, k);\n }\n has(k) {\n const this$ = this;\n return HashSet__Contains_2B595(this$, k);\n }\n keys() {\n const this$ = this;\n return map((x) => x, this$);\n }\n values() {\n const this$ = this;\n return map((x) => x, this$);\n }\n entries() {\n const this$ = this;\n return map((v) => [v, v], this$);\n }\n forEach(f, thisArg) {\n const this$ = this;\n iterate((x) => {\n f(x, x, this$);\n }, this$);\n }\n}\nexport function HashSet_$reflection(gen0) {\n return class_type(\"Fable.Collections.HashSet\", [gen0], HashSet);\n}\nexport function HashSet_$ctor_Z6150332D(items, comparer) {\n return new HashSet(items, comparer);\n}\nfunction HashSet__TryFindIndex_2B595(this$, k) {\n const h = this$.comparer.GetHashCode(k) | 0;\n let matchValue;\n let outArg = defaultOf();\n matchValue = [tryGetValue(this$.hashMap, h, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return [true, h, matchValue[1].findIndex((v_1) => this$.comparer.Equals(k, v_1))];\n }\n else {\n return [false, h, -1];\n }\n}\nfunction HashSet__TryFind_2B595(this$, k) {\n const matchValue = HashSet__TryFindIndex_2B595(this$, k);\n let matchResult;\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return some(getItemFromDict(this$.hashMap, matchValue[1])[matchValue[2]]);\n default:\n return undefined;\n }\n}\nexport function HashSet__get_Comparer(this$) {\n return this$.comparer;\n}\nexport function HashSet__Clear(this$) {\n this$.hashMap.clear();\n}\nexport function HashSet__get_Count(this$) {\n let count = 0;\n let enumerator = getEnumerator(this$.hashMap.values());\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const items = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n count = ((count + items.length) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return count | 0;\n}\nexport function HashSet__Add_2B595(this$, k) {\n const matchValue = HashSet__TryFindIndex_2B595(this$, k);\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n return false;\n }\n else {\n const value = void (getItemFromDict(this$.hashMap, matchValue[1]).push(k));\n return true;\n }\n }\n else {\n this$.hashMap.set(matchValue[1], [k]);\n return true;\n }\n}\nexport function HashSet__Contains_2B595(this$, k) {\n const matchValue = HashSet__TryFindIndex_2B595(this$, k);\n let matchResult;\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return true;\n default:\n return false;\n }\n}\nexport function HashSet__Remove_2B595(this$, k) {\n const matchValue = HashSet__TryFindIndex_2B595(this$, k);\n let matchResult;\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n getItemFromDict(this$.hashMap, matchValue[1]).splice(matchValue[2], 1);\n return true;\n }\n default:\n return false;\n }\n}\n","import { equals, getEnumUnderlyingType, isEnum, getTupleElements, isTuple, getElementType, isArray, getFunctionElements, isFunction, getUnionCases, getUnionCaseFields, isUnion, getGenerics, getRecordElements, name, isRecord, fullName } from \"../fable-library-js.4.19.3/Reflection.js\";\nimport { UnionCase, RecordField, TypeInfo } from \"./TypeInfo.fs.js\";\nimport { item, map } from \"../fable-library-js.4.19.3/Array.js\";\nimport { collect, singleton, append, delay, toArray } from \"../fable-library-js.4.19.3/Seq.js\";\nimport { defaultOf, structuralHash, Lazy } from \"../fable-library-js.4.19.3/Util.js\";\nimport { Dictionary } from \"../fable-library-js.4.19.3/MutableMap.js\";\nimport { tryGetValue } from \"../fable-library-js.4.19.3/MapUtil.js\";\nimport { FSharpRef } from \"../fable-library-js.4.19.3/Types.js\";\nimport { endsWith, isNullOrEmpty } from \"../fable-library-js.4.19.3/String.js\";\n\nexport function $007CPrimitiveType$007C_$007C(primType) {\n const matchValue = fullName(primType);\n switch (matchValue) {\n case \"System.String\":\n return new TypeInfo(2, []);\n case \"System.Char\":\n return new TypeInfo(1, []);\n case \"System.Int16\":\n return new TypeInfo(11, []);\n case \"System.Int32\":\n return new TypeInfo(6, []);\n case \"Microsoft.FSharp.Core.int64`1\":\n case \"System.Int64\":\n return new TypeInfo(12, []);\n case \"System.UInt16\":\n return new TypeInfo(3, []);\n case \"System.UInt32\":\n return new TypeInfo(4, []);\n case \"System.UInt64\":\n return new TypeInfo(5, []);\n case \"System.DateTime\":\n return new TypeInfo(15, []);\n case \"System.DateOnly\":\n return new TypeInfo(17, []);\n case \"System.TimeOnly\":\n return new TypeInfo(18, []);\n case \"System.TimeSpan\":\n return new TypeInfo(20, []);\n case \"System.DateTimeOffset\":\n return new TypeInfo(16, []);\n case \"System.Boolean\":\n return new TypeInfo(7, []);\n case \"System.Single\":\n return new TypeInfo(8, []);\n case \"System.Double\":\n return new TypeInfo(9, []);\n case \"Microsoft.FSharp.Core.decimal`1\":\n case \"System.Decimal\":\n return new TypeInfo(10, []);\n case \"System.Numerics.BigInteger\":\n return new TypeInfo(19, []);\n case \"Microsoft.FSharp.Core.Unit\":\n return new TypeInfo(0, []);\n case \"System.Guid\":\n return new TypeInfo(21, []);\n case \"System.Byte\":\n return new TypeInfo(13, []);\n case \"System.SByte\":\n return new TypeInfo(14, []);\n case \"System.Object\":\n return new TypeInfo(23, []);\n case \"System.Uri\":\n return new TypeInfo(22, []);\n default:\n return undefined;\n }\n}\n\nexport function $007CRecordType$007C_$007C(t) {\n if (isRecord(t)) {\n return map((field) => [field, name(field), field[1]], getRecordElements(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CSetType$007C_$007C(t) {\n if (fullName(t).indexOf(\"Microsoft.FSharp.Collections.FSharpSet`1\") === 0) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CNullable$007C_$007C(t) {\n if (fullName(t).indexOf(\"System.Nullable`1\") === 0) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CUnionType$007C_$007C(t) {\n if (isUnion(t)) {\n return map((info) => [name(info), info, map((prop) => prop[1], getUnionCaseFields(info))], getUnionCases(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CMapType$007C_$007C(t) {\n if (fullName(t).indexOf(\"Microsoft.FSharp.Collections.FSharpMap`2\") === 0) {\n const genArgs = getGenerics(t);\n return [item(0, genArgs), item(1, genArgs)];\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CListType$007C_$007C(t) {\n if (fullName(t).indexOf(\"Microsoft.FSharp.Collections.FSharpList`1\") === 0) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function flattenFuncTypes(typeDef) {\n return toArray(delay(() => {\n if (isFunction(typeDef)) {\n const patternInput = getFunctionElements(typeDef);\n return append(flattenFuncTypes(patternInput[0]), delay(() => flattenFuncTypes(patternInput[1])));\n }\n else {\n return singleton(typeDef);\n }\n }));\n}\n\nexport function $007CFuncType$007C_$007C(t) {\n if (isFunction(t)) {\n return flattenFuncTypes(t);\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CArrayType$007C_$007C(t) {\n if (isArray(t)) {\n return getElementType(t);\n }\n else {\n return undefined;\n }\n}\n\nexport function $007COptionType$007C_$007C(t) {\n if (fullName(t).indexOf(\"Microsoft.FSharp.Core.FSharpOption`1\") === 0) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CTupleType$007C_$007C(t) {\n if (isTuple(t)) {\n return getTupleElements(t);\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CSeqType$007C_$007C(t) {\n if (fullName(t).indexOf(\"System.Collections.Generic.IEnumerable`1\") === 0) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CDictionaryType$007C_$007C(t) {\n if (fullName(t).indexOf(\"System.Collections.Generic.Dictionary\") === 0) {\n const genArgs = getGenerics(t);\n return [item(0, genArgs), item(1, genArgs)];\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CResizeArrayType$007C_$007C(t) {\n if (fullName(t).indexOf(\"System.Collections.Generic.List\") === 0) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CHashSetType$007C_$007C(t) {\n if (fullName(t).indexOf(\"System.Collections.Generic.HashSet\") === 0) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CAsyncType$007C_$007C(t) {\n if (fullName(t).indexOf(\"Microsoft.FSharp.Control.FSharpAsync`1\") === 0) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CPromiseType$007C_$007C(t) {\n if (fullName(t).indexOf(\"Fable.Core.JS.Promise`1\") === 0) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nfunction lazyToDelayed(l, unitVar) {\n return l.Value;\n}\n\nexport function $007CEnumType$007C_$007C(t) {\n if (isEnum(t)) {\n return getEnumUnderlyingType(t);\n }\n else {\n return undefined;\n }\n}\n\nfunction _createTypeInfo(resolvedType) {\n let l, l_3, l_4, l_5, l_6, l_7, l_8, l_9, l_10, l_11, l_12, l_13, l_14, l_15, l_16, l_17;\n const activePatternResult = $007CPrimitiveType$007C_$007C(resolvedType);\n if (activePatternResult != null) {\n const typeInfo = activePatternResult;\n return typeInfo;\n }\n else {\n const activePatternResult_1 = $007CFuncType$007C_$007C(resolvedType);\n if (activePatternResult_1 != null) {\n const types = activePatternResult_1;\n return new TypeInfo(37, [(l = (new Lazy(() => map(createTypeInfo, types))), () => lazyToDelayed(l, undefined))]);\n }\n else {\n const activePatternResult_2 = $007CRecordType$007C_$007C(resolvedType);\n if (activePatternResult_2 != null) {\n const fields = activePatternResult_2;\n const l_1 = new Lazy(() => [toArray(delay(() => collect((matchValue) => singleton(new RecordField(matchValue[1], createTypeInfo(matchValue[2]), matchValue[0])), fields))), resolvedType]);\n return new TypeInfo(39, [() => lazyToDelayed(l_1, undefined)]);\n }\n else {\n const activePatternResult_3 = $007CUnionType$007C_$007C(resolvedType);\n if (activePatternResult_3 != null) {\n const cases = activePatternResult_3;\n const l_2 = new Lazy(() => [toArray(delay(() => collect((matchValue_1) => singleton(new UnionCase(matchValue_1[0], map(createTypeInfo, matchValue_1[2]), matchValue_1[1])), cases))), resolvedType]);\n return new TypeInfo(40, [() => lazyToDelayed(l_2, undefined)]);\n }\n else {\n const activePatternResult_4 = $007CEnumType$007C_$007C(resolvedType);\n if (activePatternResult_4 != null) {\n const elemType = activePatternResult_4;\n return new TypeInfo(38, [(l_3 = (new Lazy(() => [createTypeInfo(elemType), resolvedType])), () => lazyToDelayed(l_3, undefined))]);\n }\n else {\n const activePatternResult_5 = $007CListType$007C_$007C(resolvedType);\n if (activePatternResult_5 != null) {\n const elemType_1 = activePatternResult_5;\n return new TypeInfo(28, [(l_4 = (new Lazy(() => createTypeInfo(elemType_1))), () => lazyToDelayed(l_4, undefined))]);\n }\n else {\n const activePatternResult_6 = $007CResizeArrayType$007C_$007C(resolvedType);\n if (activePatternResult_6 != null) {\n const elemType_2 = activePatternResult_6;\n return new TypeInfo(35, [(l_5 = (new Lazy(() => createTypeInfo(elemType_2))), () => lazyToDelayed(l_5, undefined))]);\n }\n else {\n const activePatternResult_7 = $007CHashSetType$007C_$007C(resolvedType);\n if (activePatternResult_7 != null) {\n const elemType_3 = activePatternResult_7;\n return new TypeInfo(36, [(l_6 = (new Lazy(() => createTypeInfo(elemType_3))), () => lazyToDelayed(l_6, undefined))]);\n }\n else {\n const activePatternResult_8 = $007CArrayType$007C_$007C(resolvedType);\n if (activePatternResult_8 != null) {\n const elemType_4 = activePatternResult_8;\n return new TypeInfo(30, [(l_7 = (new Lazy(() => createTypeInfo(elemType_4))), () => lazyToDelayed(l_7, undefined))]);\n }\n else {\n const activePatternResult_9 = $007CTupleType$007C_$007C(resolvedType);\n if (activePatternResult_9 != null) {\n const types_1 = activePatternResult_9;\n return new TypeInfo(32, [(l_8 = (new Lazy(() => map(createTypeInfo, types_1))), () => lazyToDelayed(l_8, undefined))]);\n }\n else {\n const activePatternResult_10 = $007COptionType$007C_$007C(resolvedType);\n if (activePatternResult_10 != null) {\n const elemType_5 = activePatternResult_10;\n return new TypeInfo(27, [(l_9 = (new Lazy(() => createTypeInfo(elemType_5))), () => lazyToDelayed(l_9, undefined))]);\n }\n else {\n const activePatternResult_11 = $007CNullable$007C_$007C(resolvedType);\n if (activePatternResult_11 != null) {\n const elemType_6 = activePatternResult_11;\n return new TypeInfo(27, [(l_10 = (new Lazy(() => createTypeInfo(elemType_6))), () => lazyToDelayed(l_10, undefined))]);\n }\n else {\n const activePatternResult_12 = $007CSetType$007C_$007C(resolvedType);\n if (activePatternResult_12 != null) {\n const elemType_7 = activePatternResult_12;\n return new TypeInfo(29, [(l_11 = (new Lazy(() => createTypeInfo(elemType_7))), () => lazyToDelayed(l_11, undefined))]);\n }\n else {\n const activePatternResult_13 = $007CMapType$007C_$007C(resolvedType);\n if (activePatternResult_13 != null) {\n const keyType = activePatternResult_13[0];\n const valueType = activePatternResult_13[1];\n return new TypeInfo(33, [(l_12 = (new Lazy(() => [createTypeInfo(keyType), createTypeInfo(valueType)])), () => lazyToDelayed(l_12, undefined))]);\n }\n else {\n const activePatternResult_14 = $007CDictionaryType$007C_$007C(resolvedType);\n if (activePatternResult_14 != null) {\n const keyType_1 = activePatternResult_14[0];\n const valueType_1 = activePatternResult_14[1];\n return new TypeInfo(34, [(l_13 = (new Lazy(() => [createTypeInfo(keyType_1), createTypeInfo(valueType_1), valueType_1])), () => lazyToDelayed(l_13, undefined))]);\n }\n else {\n const activePatternResult_15 = $007CSeqType$007C_$007C(resolvedType);\n if (activePatternResult_15 != null) {\n const elemType_8 = activePatternResult_15;\n return new TypeInfo(31, [(l_14 = (new Lazy(() => createTypeInfo(elemType_8))), () => lazyToDelayed(l_14, undefined))]);\n }\n else {\n const activePatternResult_16 = $007CAsyncType$007C_$007C(resolvedType);\n if (activePatternResult_16 != null) {\n const elemType_9 = activePatternResult_16;\n return new TypeInfo(25, [(l_15 = (new Lazy(() => createTypeInfo(elemType_9))), () => lazyToDelayed(l_15, undefined))]);\n }\n else {\n const activePatternResult_17 = $007CPromiseType$007C_$007C(resolvedType);\n if (activePatternResult_17 != null) {\n const elemType_10 = activePatternResult_17;\n return new TypeInfo(26, [(l_16 = (new Lazy(() => createTypeInfo(elemType_10))), () => lazyToDelayed(l_16, undefined))]);\n }\n else {\n return new TypeInfo(24, [(l_17 = (new Lazy(() => resolvedType)), () => lazyToDelayed(l_17, undefined))]);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}\n\nconst typeInfoCache = new Dictionary([], {\n Equals: equals,\n GetHashCode: structuralHash,\n});\n\nexport function createTypeInfo(resolvedType) {\n let matchValue;\n let outArg = defaultOf();\n matchValue = [tryGetValue(typeInfoCache, resolvedType, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n const ti_1 = _createTypeInfo(resolvedType);\n if ((!isNullOrEmpty(fullName(resolvedType)) && !endsWith(fullName(resolvedType), \"`1[]\")) && !endsWith(fullName(resolvedType), \"`2[]\")) {\n typeInfoCache.set(resolvedType, ti_1);\n return ti_1;\n }\n else {\n return ti_1;\n }\n }\n}\n\n/**\n * returns whether a type is primitive\n */\nexport function isPrimitive(_arg) {\n switch (_arg.tag) {\n case 0:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 15:\n case 16:\n case 17:\n case 18:\n case 19:\n case 21:\n case 27:\n return true;\n default:\n return false;\n }\n}\n\n/**\n * returns whether the discrimiated union type is like a enum\n */\nexport function enumUnion(_arg) {\n if (_arg.tag === 40) {\n const array = _arg.fields[0]()[0];\n return array.every((case$) => (case$.CaseTypes.length === 0));\n }\n else {\n return false;\n }\n}\n\n","import { comparePrimitives, padLeftAndRightWithZeros, padWithZeros } from \"./Util.js\";\nimport { toInt64, fromFloat64 } from \"./BigInt.js\";\n/**\n * Calls:\n * - `Math.ceil` if the `value` is **negative**\n * - `Math.floor` if the `value` is **positive**\n * @param value Value to round\n */\nfunction signedRound(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n}\nexport function create(d = 0, h = 0, m = 0, s = 0, ms = 0) {\n switch (arguments.length) {\n case 1:\n // ticks\n return fromTicks(arguments[0]);\n case 3:\n // h,m,s\n d = 0, h = arguments[0], m = arguments[1], s = arguments[2], ms = 0;\n break;\n default:\n // d,h,m,s,ms\n break;\n }\n return d * 86400000 + h * 3600000 + m * 60000 + s * 1000 + ms;\n}\nexport function fromTicks(ticks) {\n return Number(BigInt(ticks) / 10000n);\n}\nexport function fromDays(d) {\n return create(d, 0, 0, 0);\n}\nexport function fromHours(h) {\n return create(h, 0, 0);\n}\nexport function fromMinutes(m) {\n return create(0, m, 0);\n}\nexport function fromSeconds(s) {\n return create(0, 0, s);\n}\nexport function days(ts) {\n return signedRound(ts / 86400000);\n}\nexport function hours(ts) {\n return signedRound(ts % 86400000 / 3600000);\n}\nexport function minutes(ts) {\n return signedRound(ts % 3600000 / 60000);\n}\nexport function seconds(ts) {\n return signedRound(ts % 60000 / 1000);\n}\nexport function milliseconds(ts) {\n return signedRound(ts % 1000);\n}\nexport function ticks(ts) {\n return toInt64(fromFloat64(ts * 10000));\n}\nexport function totalDays(ts) {\n return ts / 86400000;\n}\nexport function totalHours(ts) {\n return ts / 3600000;\n}\nexport function totalMinutes(ts) {\n return ts / 60000;\n}\nexport function totalSeconds(ts) {\n return ts / 1000;\n}\nexport function negate(ts) {\n return ts * -1;\n}\nexport function add(ts1, ts2) {\n return ts1 + ts2;\n}\nexport function subtract(ts1, ts2) {\n return ts1 - ts2;\n}\nexport function multiply(ts, factor) {\n return ts * factor;\n}\nexport function divide(ts, b) {\n return ts / b;\n}\nexport const op_Addition = add;\nexport const op_Subtraction = subtract;\nexport const op_Multiply = multiply;\nexport const op_Division = divide;\nexport const compare = comparePrimitives;\nexport const compareTo = comparePrimitives;\nexport function duration(x) {\n return Math.abs(x);\n}\nexport function toString(ts, format = \"c\", _provider) {\n if ([\"c\", \"g\", \"G\"].indexOf(format) === -1) {\n throw new Error(\"Custom formats are not supported\");\n }\n const d = Math.abs(days(ts));\n const h = Math.abs(hours(ts));\n const m = Math.abs(minutes(ts));\n const s = Math.abs(seconds(ts));\n const ms = Math.abs(milliseconds(ts));\n const sign = ts < 0 ? \"-\" : \"\";\n return `${sign}${d === 0 && (format === \"c\" || format === \"g\") ? \"\" : format === \"c\" ? d + \".\" : d + \":\"}${format === \"g\" ? h : padWithZeros(h, 2)}:${padWithZeros(m, 2)}:${padWithZeros(s, 2)}${ms === 0 && (format === \"c\" || format === \"g\") ? \"\" : format === \"g\" ? \".\" + padWithZeros(ms, 3) : \".\" + padLeftAndRightWithZeros(ms, 3, 7)}`;\n}\nexport function parse(str) {\n const firstDot = str.search(\"\\\\.\");\n const firstColon = str.search(\"\\\\:\");\n if (firstDot === -1 && firstColon === -1) { // There is only a day ex: 4\n const d = parseInt(str, 0);\n if (isNaN(d)) {\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n }\n else {\n return create(d, 0, 0, 0, 0);\n }\n }\n if (firstColon > 0) { // process time part\n // WIP: (-?)(((\\d+)\\.)?([0-9]|0[0-9]|1[0-9]|2[0-3]):(\\d+)(:\\d+(\\.\\d{1,7})?)?|\\d+(?:(?!\\.)))\n const r = /^(-?)((\\d+)\\.)?(?:0*)([0-9]|0[0-9]|1[0-9]|2[0-3]):(?:0*)([0-5][0-9]|[0-9])(:(?:0*)([0-5][0-9]|[0-9]))?\\.?(\\d+)?$/.exec(str);\n if (r != null && r[4] != null && r[5] != null) {\n let d = 0;\n let ms = 0;\n let s = 0;\n const sign = r[1] != null && r[1] === \"-\" ? -1 : 1;\n const h = +r[4];\n const m = +r[5];\n if (r[3] != null) {\n d = +r[3];\n }\n if (r[7] != null) {\n s = +r[7];\n }\n if (r[8] != null) {\n // Depending on the number of decimals passed, we need to adapt the numbers\n switch (r[8].length) {\n case 1:\n ms = +r[8] * 100;\n break;\n case 2:\n ms = +r[8] * 10;\n break;\n case 3:\n ms = +r[8];\n break;\n case 4:\n ms = +r[8] / 10;\n break;\n case 5:\n ms = +r[8] / 100;\n break;\n case 6:\n ms = +r[8] / 1000;\n break;\n case 7:\n ms = +r[8] / 10000;\n break;\n default:\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n }\n }\n return sign * create(d, h, m, s, ms);\n }\n }\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch {\n return false;\n }\n}\n","import isBrowser from \"./isBrowser.js\";\nimport { toArray as toArray_2, isEmpty as isEmpty_1, find, count, containsKey, toList as toList_1, tryFind, remove, ofList } from \"../fable-library-js.4.19.3/Map.js\";\nimport { map as map_3, choose, tryFind as tryFind_2, toArray, length, tail as tail_1, head, isEmpty, empty, singleton, ofArray } from \"../fable-library-js.4.19.3/List.js\";\nimport { int64ToString, int32ToString, disposeSafe, getEnumerator, structuralHash, safeHash, compare, equals, defaultOf, comparePrimitives } from \"../fable-library-js.4.19.3/Util.js\";\nimport { toString as toString_2, FSharpRef, Union } from \"../fable-library-js.4.19.3/Types.js\";\nimport { getUnionFields, getRecordField, makeRecord, fullName, makeUnion, name as name_2, union_type, string_type } from \"../fable-library-js.4.19.3/Reflection.js\";\nimport { Json, Json_$reflection } from \"./Json.fs.js\";\nimport { toArray as toArray_1, map as map_4, collect, tryFind as tryFind_3, forAll, empty as empty_1, singleton as singleton_1, append, delay, toList } from \"../fable-library-js.4.19.3/Seq.js\";\nimport { value as value_91, some, map as map_1 } from \"../fable-library-js.4.19.3/Option.js\";\nimport { find as find_1, concat, mapIndexed, equalsWith, zip, map as map_2, tryFind as tryFind_1, item as item_1 } from \"../fable-library-js.4.19.3/Array.js\";\nimport { toText, join, fromBase64String, printf, toFail, substring, endsWith } from \"../fable-library-js.4.19.3/String.js\";\nimport { parse } from \"../fable-library-js.4.19.3/Double.js\";\nimport { tryParse, parse as parse_1 } from \"../fable-library-js.4.19.3/Int32.js\";\nimport { Uri } from \"../fable-library-js.4.19.3/Uri.js\";\nimport { toString as toString_1 } from \"../fable-library-js.4.19.3/Decimal.js\";\nimport Decimal from \"../fable-library-js.4.19.3/Decimal.js\";\nimport { toString, fromInt32, parse as parse_3, toInt64, fromFloat64, toUInt64 } from \"../fable-library-js.4.19.3/BigInt.js\";\nimport { tryParse as tryParse_1, parse as parse_2 } from \"../fable-library-js.4.19.3/Long.js\";\nimport { SimpleJson_stringify, SimpleJson_parseNative, SimpleJson_parse, SimpleJson_toString, SimpleJson_toPlainObject } from \"./SimpleJson.fs.js\";\nimport { toString as toString_3, parse as parse_4 } from \"../fable-library-js.4.19.3/Date.js\";\nimport { fromUnixTimeSeconds, parse as parse_5 } from \"../fable-library-js.4.19.3/DateOffset.js\";\nimport { dayNumber, fromDayNumber } from \"../fable-library-js.4.19.3/DateOnly.js\";\nimport { fromTicks } from \"../fable-library-js.4.19.3/TimeOnly.js\";\nimport { parse as parse_6 } from \"../fable-library-js.4.19.3/Guid.js\";\nimport { getBytesInt32, toInt64 as toInt64_1 } from \"../fable-library-js.4.19.3/BitConverter.js\";\nimport { ofList as ofList_1 } from \"../fable-library-js.4.19.3/Set.js\";\nimport { TypeInfo } from \"./TypeInfo.fs.js\";\nimport { Dictionary } from \"../fable-library-js.4.19.3/MutableMap.js\";\nimport { addToSet, addToDict } from \"../fable-library-js.4.19.3/MapUtil.js\";\nimport { HashSet } from \"../fable-library-js.4.19.3/MutableSet.js\";\nimport { enumUnion, isPrimitive } from \"./TypeInfo.Converter.fs.js\";\nimport quote from \"./quote.js\";\nimport { ticks } from \"../fable-library-js.4.19.3/TimeSpan.js\";\n\nexport const Convert_isBrowser = isBrowser;\n\nexport const Convert_insideBrowser = Convert_isBrowser();\n\nfunction Convert_isDefined(value) {\n return !((value === undefined));\n}\n\n/**\n * Uses internal representation of F# maps to determine whether we are using Fable 3 or not\n */\nexport function Convert_usingFable3() {\n const map = JSON.parse(JSON.stringify(ofList(ofArray([[1, 1], [2, 2]]), {\n Compare: comparePrimitives,\n })));\n const tree = map[\"tree\"];\n if ((Convert_isDefined(tree) && Convert_isDefined(tree[\"k\"])) && Convert_isDefined(tree[\"v\"])) {\n return Convert_isDefined(tree[\"h\"]);\n }\n else {\n return false;\n }\n}\n\nexport const Convert_isUsingFable3 = Convert_usingFable3();\n\nexport class Convert_InternalMap extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"MapEmpty\", \"MapOne\", \"MapNode\"];\n }\n}\n\nexport function Convert_InternalMap_$reflection() {\n return union_type(\"Fable.SimpleJson.Convert.InternalMap\", [], Convert_InternalMap, () => [[], [[\"Item1\", string_type], [\"Item2\", Json_$reflection()]], [[\"Item1\", string_type], [\"Item2\", Json_$reflection()], [\"Item3\", Convert_InternalMap_$reflection()], [\"Item4\", Convert_InternalMap_$reflection()]]]);\n}\n\nexport function Convert_flattenMap(_arg) {\n switch (_arg.tag) {\n case 1:\n return singleton([_arg.fields[0], _arg.fields[1]]);\n case 2:\n return toList(delay(() => append(Convert_flattenMap(_arg.fields[2]), delay(() => append(Convert_flattenMap(_arg.fields[3]), delay(() => singleton_1([_arg.fields[0], _arg.fields[1]])))))));\n default:\n return empty();\n }\n}\n\nexport function Convert_$007CKeyValue$007C_$007C(key, map) {\n return map_1((value) => [key, value, remove(key, map)], tryFind(key, map));\n}\n\nexport function Convert_$007CNonArray$007C_$007C(_arg) {\n if (_arg.tag === 4) {\n return undefined;\n }\n else {\n return _arg;\n }\n}\n\nexport function Convert_$007CMapEmpty$007C_$007C(json) {\n let matchResult;\n if (json.tag === 1) {\n if (json.fields[0] === \"MapEmpty\") {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return json;\n default:\n return undefined;\n }\n}\n\nexport function Convert_$007CMapKey$007C_$007C(_arg) {\n switch (_arg.tag) {\n case 0:\n return _arg.fields[0].toString();\n case 1:\n return _arg.fields[0];\n default:\n return undefined;\n }\n}\n\nexport function Convert_$007CMapOne$007C_$007C(_arg) {\n let matchResult, key, value;\n if (_arg.tag === 4) {\n if (!isEmpty(_arg.fields[0])) {\n if (head(_arg.fields[0]).tag === 1) {\n if (head(_arg.fields[0]).fields[0] === \"MapOne\") {\n if (!isEmpty(tail_1(_arg.fields[0]))) {\n const activePatternResult = Convert_$007CMapKey$007C_$007C(head(tail_1(_arg.fields[0])));\n if (activePatternResult != null) {\n if (!isEmpty(tail_1(tail_1(_arg.fields[0])))) {\n if (isEmpty(tail_1(tail_1(tail_1(_arg.fields[0]))))) {\n matchResult = 0;\n key = activePatternResult;\n value = head(tail_1(tail_1(_arg.fields[0])));\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return [key, value];\n default:\n return undefined;\n }\n}\n\nexport function Convert_$007CMapNode$007C_$007C(_arg) {\n let matchResult, key, left, right, value;\n if (_arg.tag === 4) {\n if (!isEmpty(_arg.fields[0])) {\n if (head(_arg.fields[0]).tag === 1) {\n if (head(_arg.fields[0]).fields[0] === \"MapNode\") {\n if (!isEmpty(tail_1(_arg.fields[0]))) {\n const activePatternResult = Convert_$007CMapKey$007C_$007C(head(tail_1(_arg.fields[0])));\n if (activePatternResult != null) {\n if (!isEmpty(tail_1(tail_1(_arg.fields[0])))) {\n if (!isEmpty(tail_1(tail_1(tail_1(_arg.fields[0]))))) {\n if (!isEmpty(tail_1(tail_1(tail_1(tail_1(_arg.fields[0])))))) {\n if (!isEmpty(tail_1(tail_1(tail_1(tail_1(tail_1(_arg.fields[0]))))))) {\n if (head(tail_1(tail_1(tail_1(tail_1(tail_1(_arg.fields[0])))))).tag === 0) {\n if (isEmpty(tail_1(tail_1(tail_1(tail_1(tail_1(tail_1(_arg.fields[0])))))))) {\n matchResult = 0;\n key = activePatternResult;\n left = head(tail_1(tail_1(tail_1(_arg.fields[0]))));\n right = head(tail_1(tail_1(tail_1(tail_1(_arg.fields[0])))));\n value = head(tail_1(tail_1(_arg.fields[0])));\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return [key, value, left, right];\n default:\n return undefined;\n }\n}\n\nexport function Convert_generateMap(json) {\n if (Convert_$007CMapEmpty$007C_$007C(json) != null) {\n return new Convert_InternalMap(0, []);\n }\n else {\n const activePatternResult_1 = Convert_$007CMapOne$007C_$007C(json);\n if (activePatternResult_1 != null) {\n const key = activePatternResult_1[0];\n const value = activePatternResult_1[1];\n return new Convert_InternalMap(1, [key, value]);\n }\n else {\n const activePatternResult_2 = Convert_$007CMapNode$007C_$007C(json);\n if (activePatternResult_2 != null) {\n const key_1 = activePatternResult_2[0];\n const left = activePatternResult_2[2];\n const right = activePatternResult_2[3];\n const value_1 = activePatternResult_2[1];\n const matchValue = Convert_generateMap(left);\n const matchValue_1 = Convert_generateMap(right);\n let matchResult, leftMap, rightMap;\n if (matchValue != null) {\n if (matchValue_1 != null) {\n matchResult = 0;\n leftMap = matchValue;\n rightMap = matchValue_1;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return new Convert_InternalMap(2, [key_1, value_1, leftMap, rightMap]);\n default:\n return undefined;\n }\n }\n else {\n return undefined;\n }\n }\n }\n}\n\nexport function Convert_flatteFable3Map(tree) {\n return toList(delay(() => {\n let matchValue, matchValue_1, key, value;\n return append((matchValue = tryFind(\"k\", tree), (matchValue_1 = tryFind(\"v\", tree), (matchValue != null) ? ((matchValue.tag === 1) ? ((matchValue_1 != null) ? ((key = matchValue.fields[0], (value = matchValue_1, singleton_1([key, value])))) : (empty_1())) : (empty_1())) : (empty_1()))), delay(() => {\n let matchValue_3, left;\n return append((matchValue_3 = tryFind(\"left\", tree), (matchValue_3 != null) ? ((matchValue_3.tag === 5) ? ((left = matchValue_3.fields[0], Convert_flatteFable3Map(left))) : (empty_1())) : (empty_1())), delay(() => {\n const matchValue_4 = tryFind(\"right\", tree);\n let matchResult, right;\n if (matchValue_4 != null) {\n if (matchValue_4.tag === 5) {\n matchResult = 0;\n right = matchValue_4.fields[0];\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return Convert_flatteFable3Map(right);\n default: {\n return empty_1();\n }\n }\n }));\n }));\n }));\n}\n\nexport function Convert_flattenFable3Lists(linkedList) {\n return toList(delay(() => {\n let matchValue;\n return append((matchValue = tryFind(\"head\", linkedList), (matchValue == null) ? (empty_1()) : singleton_1(matchValue)), delay(() => {\n const matchValue_1 = tryFind(\"tail\", linkedList);\n let matchResult, tail;\n if (matchValue_1 != null) {\n if (matchValue_1.tag === 5) {\n matchResult = 0;\n tail = matchValue_1.fields[0];\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return Convert_flattenFable3Lists(tail);\n default: {\n return empty_1();\n }\n }\n }));\n }));\n}\n\n/**\n * Returns whether the type information resembles a type of a sequence of elements (including tuples)\n */\nexport function Convert_arrayLike(_arg) {\n switch (_arg.tag) {\n case 30:\n return true;\n case 28:\n return true;\n case 31:\n return true;\n case 32:\n return true;\n case 29:\n return true;\n case 35:\n return true;\n case 36:\n return true;\n default:\n return false;\n }\n}\n\nexport function Convert_isRecord(_arg) {\n if (_arg.tag === 39) {\n return true;\n }\n else {\n return false;\n }\n}\n\nexport function Convert_unionOfRecords(_arg) {\n if (_arg.tag === 40) {\n return forAll((case$) => {\n if (case$.CaseTypes.length === 1) {\n return Convert_isRecord(item_1(0, case$.CaseTypes));\n }\n else {\n return false;\n }\n }, _arg.fields[0]()[0]);\n }\n else {\n return false;\n }\n}\n\nexport function Convert_optional(_arg) {\n if (_arg.tag === 27) {\n return true;\n }\n else {\n return false;\n }\n}\n\nexport function Convert_isQuoted(input) {\n if (input.indexOf(\"\\\"\") === 0) {\n return endsWith(input, \"\\\"\");\n }\n else {\n return false;\n }\n}\n\nexport function Convert_betweenQuotes(input) {\n return (\"\\\"\" + input) + \"\\\"\";\n}\n\nexport function Convert_removeQuotes(input) {\n return substring(input, 1, input.length - 2);\n}\n\nexport function Convert_fromJsonAs(input_mut, typeInfo_mut) {\n let foundCase, foundCase_1, testExpr, values_8, tree, tree_1;\n Convert_fromJsonAs:\n while (true) {\n const input = input_mut, typeInfo = typeInfo_mut;\n let matchResult, value_2, value_3, value_4, value_5, value_6, value_7, value_8, value_9, value_10, value_11, value_12, value_13, value_14, value_15, value_16, value_17, value_18, value_19, value_20, value_21, value_22, value_23, value_24, value_25, value_26, getlElemType, value_27, getElemType, value_28, getElemType_1, value_29, genericJson, value_30, value_31, value_32, value_33, value_34, value_35, value_36, value_37, value_38, value_39, value_40, value_41, value_42, getTypes_1, values, jsonValue_5, optionalTypeDelayed_5, value_49, value_50, dict, caseName_4, getTypes_2, caseName_5, getTypes_3, getFields, serializedRecord, caseValue, getTypes_4, elementTypeDelayed, values_4, elementTypeDelayed_1, values_5, elementTypeDelayed_2, linkedList, elementTypeDelayed_3, values_6, elementTypeDelayed_4, values_7, array_12, tupleTypesDelayed, dict_1, getTypes_5, getTypes_6, tuples, getTypes_7, tuples_1, dict_2, getTypes_8, getType, items, getTypes_9, map, getType_1;\n switch (input.tag) {\n case 1: {\n switch (typeInfo.tag) {\n case 9: {\n if (input.fields[0].toLocaleLowerCase() === \"nan\") {\n matchResult = 1;\n value_3 = input.fields[0];\n }\n else {\n matchResult = 2;\n value_4 = input.fields[0];\n }\n break;\n }\n case 8: {\n if (input.fields[0].toLocaleLowerCase() === \"nan\") {\n matchResult = 4;\n value_6 = input.fields[0];\n }\n else {\n matchResult = 5;\n value_7 = input.fields[0];\n }\n break;\n }\n case 6: {\n matchResult = 8;\n value_10 = input.fields[0];\n break;\n }\n case 1: {\n matchResult = 9;\n value_11 = input.fields[0];\n break;\n }\n case 2: {\n matchResult = 11;\n value_13 = input.fields[0];\n break;\n }\n case 22: {\n matchResult = 13;\n value_15 = input.fields[0];\n break;\n }\n case 10: {\n matchResult = 14;\n value_16 = input.fields[0];\n break;\n }\n case 11: {\n matchResult = 16;\n value_18 = input.fields[0];\n break;\n }\n case 3: {\n matchResult = 19;\n value_21 = input.fields[0];\n break;\n }\n case 4: {\n matchResult = 21;\n value_23 = input.fields[0];\n break;\n }\n case 5: {\n matchResult = 23;\n value_25 = input.fields[0];\n break;\n }\n case 38: {\n matchResult = 25;\n getlElemType = typeInfo.fields[0];\n value_27 = input.fields[0];\n break;\n }\n case 30: {\n matchResult = 27;\n getElemType_1 = typeInfo.fields[0];\n value_29 = input.fields[0];\n break;\n }\n case 23: {\n matchResult = 30;\n genericJson = input;\n break;\n }\n case 12: {\n matchResult = 31;\n value_30 = input.fields[0];\n break;\n }\n case 13: {\n matchResult = 32;\n value_31 = input.fields[0];\n break;\n }\n case 14: {\n matchResult = 35;\n value_34 = input.fields[0];\n break;\n }\n case 19: {\n matchResult = 36;\n value_35 = input.fields[0];\n break;\n }\n case 15: {\n matchResult = 38;\n value_37 = input.fields[0];\n break;\n }\n case 16: {\n matchResult = 39;\n value_38 = input.fields[0];\n break;\n }\n case 17: {\n matchResult = 42;\n value_41 = input.fields[0];\n break;\n }\n case 18: {\n matchResult = 43;\n value_42 = input.fields[0];\n break;\n }\n case 27: {\n if (!equals(input, new Json(3, []))) {\n matchResult = 46;\n jsonValue_5 = input;\n optionalTypeDelayed_5 = typeInfo.fields[0];\n }\n else {\n matchResult = 67;\n }\n break;\n }\n case 21: {\n matchResult = 47;\n value_49 = input.fields[0];\n break;\n }\n case 40: {\n if (Convert_isQuoted(input.fields[0])) {\n matchResult = 50;\n caseName_4 = input.fields[0];\n getTypes_2 = typeInfo.fields[0];\n }\n else {\n matchResult = 51;\n caseName_5 = input.fields[0];\n getTypes_3 = typeInfo.fields[0];\n }\n break;\n }\n case 39: {\n matchResult = 52;\n getFields = typeInfo.fields[0];\n serializedRecord = input.fields[0];\n break;\n }\n case 24: {\n matchResult = 66;\n getType_1 = typeInfo.fields[0];\n break;\n }\n default:\n matchResult = 67;\n }\n break;\n }\n case 2: {\n switch (typeInfo.tag) {\n case 7: {\n matchResult = 7;\n value_9 = input.fields[0];\n break;\n }\n case 23: {\n matchResult = 30;\n genericJson = input;\n break;\n }\n case 27: {\n if (!equals(input, new Json(3, []))) {\n matchResult = 46;\n jsonValue_5 = input;\n optionalTypeDelayed_5 = typeInfo.fields[0];\n }\n else {\n matchResult = 67;\n }\n break;\n }\n case 24: {\n matchResult = 66;\n getType_1 = typeInfo.fields[0];\n break;\n }\n default:\n matchResult = 67;\n }\n break;\n }\n case 3: {\n switch (typeInfo.tag) {\n case 2: {\n matchResult = 28;\n break;\n }\n case 0: {\n matchResult = 29;\n break;\n }\n case 23: {\n matchResult = 30;\n genericJson = input;\n break;\n }\n case 27: {\n matchResult = 45;\n break;\n }\n case 24: {\n matchResult = 66;\n getType_1 = typeInfo.fields[0];\n break;\n }\n default:\n matchResult = 67;\n }\n break;\n }\n case 5: {\n switch (typeInfo.tag) {\n case 23: {\n matchResult = 30;\n genericJson = input;\n break;\n }\n case 40: {\n matchResult = 44;\n getTypes_1 = typeInfo.fields[0];\n values = input.fields[0];\n break;\n }\n case 27: {\n if (!equals(input, new Json(3, []))) {\n matchResult = 46;\n jsonValue_5 = input;\n optionalTypeDelayed_5 = typeInfo.fields[0];\n }\n else {\n matchResult = 67;\n }\n break;\n }\n case 12: {\n matchResult = 49;\n dict = input.fields[0];\n break;\n }\n case 28: {\n matchResult = 56;\n elementTypeDelayed_2 = typeInfo.fields[0];\n linkedList = input.fields[0];\n break;\n }\n case 39: {\n matchResult = 60;\n dict_1 = input.fields[0];\n getTypes_5 = typeInfo.fields[0];\n break;\n }\n case 34: {\n matchResult = 63;\n dict_2 = input.fields[0];\n getTypes_8 = typeInfo.fields[0];\n break;\n }\n case 33: {\n matchResult = 65;\n getTypes_9 = typeInfo.fields[0];\n map = input.fields[0];\n break;\n }\n case 24: {\n matchResult = 66;\n getType_1 = typeInfo.fields[0];\n break;\n }\n default:\n matchResult = 67;\n }\n break;\n }\n case 4: {\n switch (typeInfo.tag) {\n case 23: {\n matchResult = 30;\n genericJson = input;\n break;\n }\n case 27: {\n if (!equals(input, new Json(3, []))) {\n matchResult = 46;\n jsonValue_5 = input;\n optionalTypeDelayed_5 = typeInfo.fields[0];\n }\n else {\n matchResult = 67;\n }\n break;\n }\n case 40: {\n matchResult = 53;\n caseValue = input.fields[0];\n getTypes_4 = typeInfo.fields[0];\n break;\n }\n case 30: {\n matchResult = 54;\n elementTypeDelayed = typeInfo.fields[0];\n values_4 = input.fields[0];\n break;\n }\n case 28: {\n matchResult = 55;\n elementTypeDelayed_1 = typeInfo.fields[0];\n values_5 = input.fields[0];\n break;\n }\n case 29: {\n matchResult = 57;\n elementTypeDelayed_3 = typeInfo.fields[0];\n values_6 = input.fields[0];\n break;\n }\n case 31: {\n matchResult = 58;\n elementTypeDelayed_4 = typeInfo.fields[0];\n values_7 = input.fields[0];\n break;\n }\n case 32: {\n matchResult = 59;\n array_12 = input.fields[0];\n tupleTypesDelayed = typeInfo.fields[0];\n break;\n }\n case 33: {\n matchResult = 61;\n getTypes_6 = typeInfo.fields[0];\n tuples = input.fields[0];\n break;\n }\n case 34: {\n matchResult = 62;\n getTypes_7 = typeInfo.fields[0];\n tuples_1 = input.fields[0];\n break;\n }\n case 36: {\n matchResult = 64;\n getType = typeInfo.fields[0];\n items = input.fields[0];\n break;\n }\n case 24: {\n matchResult = 66;\n getType_1 = typeInfo.fields[0];\n break;\n }\n default:\n matchResult = 67;\n }\n break;\n }\n default:\n switch (typeInfo.tag) {\n case 9: {\n matchResult = 0;\n value_2 = input.fields[0];\n break;\n }\n case 8: {\n matchResult = 3;\n value_5 = input.fields[0];\n break;\n }\n case 6: {\n matchResult = 6;\n value_8 = input.fields[0];\n break;\n }\n case 1: {\n matchResult = 10;\n value_12 = input.fields[0];\n break;\n }\n case 2: {\n matchResult = 12;\n value_14 = input.fields[0];\n break;\n }\n case 10: {\n matchResult = 15;\n value_17 = input.fields[0];\n break;\n }\n case 11: {\n matchResult = 17;\n value_19 = input.fields[0];\n break;\n }\n case 3: {\n matchResult = 18;\n value_20 = input.fields[0];\n break;\n }\n case 4: {\n matchResult = 20;\n value_22 = input.fields[0];\n break;\n }\n case 5: {\n matchResult = 22;\n value_24 = input.fields[0];\n break;\n }\n case 20: {\n matchResult = 24;\n value_26 = input.fields[0];\n break;\n }\n case 38: {\n matchResult = 26;\n getElemType = typeInfo.fields[0];\n value_28 = input.fields[0];\n break;\n }\n case 23: {\n matchResult = 30;\n genericJson = input;\n break;\n }\n case 13: {\n matchResult = 33;\n value_32 = input.fields[0];\n break;\n }\n case 14: {\n matchResult = 34;\n value_33 = input.fields[0];\n break;\n }\n case 19: {\n matchResult = 37;\n value_36 = input.fields[0];\n break;\n }\n case 16: {\n matchResult = 40;\n value_39 = input.fields[0];\n break;\n }\n case 17: {\n matchResult = 41;\n value_40 = input.fields[0];\n break;\n }\n case 27: {\n if (!equals(input, new Json(3, []))) {\n matchResult = 46;\n jsonValue_5 = input;\n optionalTypeDelayed_5 = typeInfo.fields[0];\n }\n else {\n matchResult = 67;\n }\n break;\n }\n case 12: {\n matchResult = 48;\n value_50 = input.fields[0];\n break;\n }\n case 24: {\n matchResult = 66;\n getType_1 = typeInfo.fields[0];\n break;\n }\n default:\n matchResult = 67;\n }\n }\n switch (matchResult) {\n case 0:\n return value_2;\n case 1:\n return NaN;\n case 2:\n return parse(value_4);\n case 3:\n return value_5;\n case 4:\n return NaN;\n case 5:\n return parse(value_7);\n case 6:\n return Math.floor(value_8);\n case 7:\n return value_9;\n case 8:\n return parse_1(value_10, 511, false, 32);\n case 9:\n return value_11;\n case 10:\n return String.fromCharCode(value_12);\n case 11:\n return value_13;\n case 12:\n return value_14.toString();\n case 13:\n return Uri.create(value_15);\n case 14:\n return new Decimal(value_16);\n case 15:\n return new Decimal(value_17);\n case 16:\n return parse_1(value_18, 511, false, 16);\n case 17:\n return (value_19 + 0x8000 & 0xFFFF) - 0x8000;\n case 18:\n return value_20 & 0xFFFF;\n case 19:\n return parse_1(value_21, 511, true, 16);\n case 20:\n return value_22 >>> 0;\n case 21:\n return parse_1(value_23, 511, true, 32);\n case 22:\n return toUInt64(fromFloat64(value_24));\n case 23:\n return toUInt64(parse_2(value_25, 511, true, 64));\n case 24:\n return Math.floor(value_26);\n case 25: {\n const patternInput = getlElemType();\n const underlyingType = patternInput[0];\n const originalType = patternInput[1];\n switch (underlyingType.tag) {\n case 6: {\n let matchValue_1;\n let outArg = 0;\n matchValue_1 = [tryParse(value_27, 511, false, 32, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n if (matchValue_1[0]) {\n return matchValue_1[1];\n }\n else {\n const arg_1 = name_2(originalType);\n return toFail(printf(\"The value \\'%s\\' is not valid for enum of type \\'%s\\'\"))(value_27)(arg_1);\n }\n }\n case 12: {\n let matchValue_2;\n let outArg_1 = 0n;\n matchValue_2 = [tryParse_1(value_27, 511, false, 64, new FSharpRef(() => outArg_1, (v_1) => {\n outArg_1 = v_1;\n })), outArg_1];\n if (matchValue_2[0]) {\n return matchValue_2[1];\n }\n else {\n const arg_3 = name_2(originalType);\n return toFail(printf(\"The value \\'%s\\' is not valid for enum of type \\'%s\\'\"))(value_27)(arg_3);\n }\n }\n default: {\n const arg_5 = name_2(originalType);\n return toFail(printf(\"The value \\'%s\\' cannot be converted to enum of type \\'%s\\'\"))(value_27)(arg_5);\n }\n }\n }\n case 26: {\n const patternInput_1 = getElemType();\n return value_28;\n }\n case 27: {\n const elemType = getElemType_1();\n if (elemType.tag === 13) {\n if ((typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) ? true : Convert_insideBrowser) {\n return fromBase64String(value_29);\n }\n else {\n return Array.prototype.slice.call(Buffer.from(value_29, 'base64'));\n }\n }\n else {\n return toFail(printf(\"Cannot convert arbitrary string \\'%s\\' to %A\"))(value_29)(elemType);\n }\n }\n case 28:\n return defaultOf();\n case 29:\n return undefined;\n case 30:\n return SimpleJson_toPlainObject(genericJson);\n case 31:\n return toInt64(parse_2(value_30, 511, false, 64));\n case 32:\n return parse_1(value_31, 511, true, 8);\n case 33:\n return value_32 & 0xFF;\n case 34:\n return (value_33 + 0x80 & 0xFF) - 0x80;\n case 35:\n return parse_1(value_34, 511, false, 8);\n case 36:\n return parse_3(value_35);\n case 37:\n return fromFloat64(Math.floor(value_36));\n case 38:\n return parse_4(value_37);\n case 39:\n return parse_5(value_38);\n case 40:\n return fromUnixTimeSeconds(toInt64(fromFloat64(Math.floor(value_39))));\n case 41:\n return fromDayNumber(~~value_40);\n case 42:\n return fromDayNumber(parse_1(value_41, 511, false, 32));\n case 43:\n return fromTicks(toInt64(parse_2(value_42, 511, false, 64)));\n case 44: {\n const patternInput_2 = getTypes_1();\n const unionType = patternInput_2[1];\n const cases = patternInput_2[0];\n const matchValue_3 = toList_1(values);\n let matchResult_1, caseName_1, values_1, caseName_2, json;\n if (!isEmpty(matchValue_3)) {\n if (head(matchValue_3)[1].tag === 4) {\n if (isEmpty(tail_1(matchValue_3))) {\n matchResult_1 = 0;\n caseName_1 = head(matchValue_3)[0];\n values_1 = head(matchValue_3)[1].fields[0];\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n const activePatternResult = Convert_$007CNonArray$007C_$007C(head(matchValue_3)[1]);\n if (activePatternResult != null) {\n if (isEmpty(tail_1(matchValue_3))) {\n matchResult_1 = 1;\n caseName_2 = head(matchValue_3)[0];\n json = activePatternResult;\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n }\n }\n else {\n matchResult_1 = 2;\n }\n switch (matchResult_1) {\n case 0: {\n const _arg = tryFind_1((case$) => (case$.CaseName === caseName_1), cases);\n if (_arg != null) {\n if ((foundCase = _arg, (foundCase.CaseTypes.length === 1) && Convert_arrayLike(item_1(0, foundCase.CaseTypes)))) {\n const foundCase_2 = _arg;\n return makeUnion(foundCase_2.Info, [Convert_fromJsonAs(new Json(4, [values_1]), item_1(0, foundCase_2.CaseTypes))]);\n }\n else if ((foundCase_1 = _arg, (foundCase_1.CaseTypes.length === 1) && Convert_optional(item_1(0, foundCase_1.CaseTypes)))) {\n const foundCase_3 = _arg;\n return makeUnion(foundCase_3.Info, [Convert_fromJsonAs(new Json(4, [values_1]), item_1(0, foundCase_3.CaseTypes))]);\n }\n else {\n const foundCase_4 = _arg;\n if (((foundCase_4.CaseTypes.length === 1) && !Convert_arrayLike(item_1(0, foundCase_4.CaseTypes))) && (foundCase_4.CaseTypes.length !== length(values_1))) {\n const arg_13 = foundCase_4.CaseTypes.length | 0;\n const arg_14 = length(values_1) | 0;\n toFail(printf(\"Expected case \\'%s\\' to have %d argument types but the JSON data only contained %d values\"))(foundCase_4.CaseName)(arg_13)(arg_14);\n }\n return makeUnion(foundCase_4.Info, map_2((tupledArg) => Convert_fromJsonAs(tupledArg[1], tupledArg[0]), zip(foundCase_4.CaseTypes, toArray(values_1))));\n }\n }\n else {\n const expectedCases = join(\", \", map_2((case$_1) => toText(printf(\" \\'%s\\' \"))(case$_1.CaseName), cases));\n const arg_10 = name_2(unionType);\n return toFail(printf(\"Case %s was not valid for type \\'%s\\', expected one of the cases [%s]\"))(caseName_1)(arg_10)(expectedCases);\n }\n }\n case 1: {\n const _arg_1 = tryFind_1((case$_2) => (case$_2.CaseName === caseName_2), cases);\n let matchResult_2, caseInfo, caseName_3, caseType;\n if (_arg_1 != null) {\n if ((testExpr = _arg_1.CaseTypes, !equalsWith(equals, testExpr, defaultOf()) && (testExpr.length === 1))) {\n matchResult_2 = 0;\n caseInfo = _arg_1.Info;\n caseName_3 = _arg_1.CaseName;\n caseType = item_1(0, _arg_1.CaseTypes);\n }\n else {\n matchResult_2 = 1;\n }\n }\n else {\n matchResult_2 = 1;\n }\n switch (matchResult_2) {\n case 0:\n return makeUnion(caseInfo, [((input_1) => ((typeInfo_1) => Convert_fromJsonAs(input_1, typeInfo_1)))(json)(caseType)]);\n default: {\n const expectedCases_1 = join(\", \", map_2((case$_3) => toText(printf(\" \\'%s\\' \"))(case$_3.CaseName), cases));\n const arg_19 = name_2(unionType);\n return toFail(printf(\"Case %s was not valid for type \\'%s\\', expected one of the cases [%s]\"))(caseName_2)(arg_19)(expectedCases_1);\n }\n }\n }\n default:\n if ((containsKey(\"tag\", values) && containsKey(\"fields\", values)) && (count(values) === 2)) {\n const matchValue_4 = tryFind(\"tag\", values);\n const matchValue_5 = tryFind(\"fields\", values);\n let matchResult_3, caseIndex, fieldValues;\n if (matchValue_4 != null) {\n if (matchValue_4.tag === 0) {\n if (matchValue_5 != null) {\n if (matchValue_5.tag === 4) {\n matchResult_3 = 0;\n caseIndex = matchValue_4.fields[0];\n fieldValues = matchValue_5.fields[0];\n }\n else {\n matchResult_3 = 1;\n }\n }\n else {\n matchResult_3 = 1;\n }\n }\n else {\n matchResult_3 = 1;\n }\n }\n else {\n matchResult_3 = 1;\n }\n switch (matchResult_3) {\n case 0: {\n const foundCase_5 = item_1(~~caseIndex, cases);\n return makeUnion(foundCase_5.Info, mapIndexed((index, value_48) => Convert_fromJsonAs(value_48, item_1(index, foundCase_5.CaseTypes)), toArray(fieldValues)));\n }\n default: {\n const arg_21 = SimpleJson_toString(new Json(5, [values]));\n const arg_22 = fullName(unionType);\n return toFail(printf(\"Could not deserialize JSON(%s) into type %s\"))(arg_21)(arg_22);\n }\n }\n }\n else if (Convert_unionOfRecords(typeInfo)) {\n const foundDiscriminatorKey = tryFind_2((keyword) => containsKey(keyword, values), ofArray([\"__typename\", \"$typename\", \"$type\"]));\n if (foundDiscriminatorKey != null) {\n const discriminatorValueJson = find(foundDiscriminatorKey, values);\n if (discriminatorValueJson.tag === 1) {\n const discriminatorValue = discriminatorValueJson.fields[0];\n const foundUnionCase = tryFind_3((case$_4) => (case$_4.CaseName.toUpperCase() === discriminatorValue.toUpperCase()), cases);\n if (foundUnionCase != null) {\n const case$_5 = foundUnionCase;\n return makeUnion(case$_5.Info, [Convert_fromJsonAs(new Json(5, [values]), item_1(0, case$_5.CaseTypes))]);\n }\n else {\n const arg_24 = name_2(unionType);\n return toFail(printf(\"Union of records of type \\'%s\\' does not have a matching case \\'%s\\'\"))(arg_24)(discriminatorValue);\n }\n }\n else {\n const arg_26 = name_2(unionType);\n return toFail(printf(\"Union of records of type \\'%s\\' cannot be deserialized with the value of the discriminator key is not a string to match against a specific union case\"))(arg_26);\n }\n }\n else {\n const arg_23 = name_2(unionType);\n return toFail(printf(\"Could not serialize the JSON object into the union of records of type %s because the JSON did not contain a known discriminator. Expected \\'__typename\\', \\'$typeName\\' or \\'$type\\'\"))(arg_23);\n }\n }\n else {\n const unexpectedJson = JSON.stringify(matchValue_3);\n const expectedType = JSON.stringify(cases);\n return toFail(printf(\"Expected JSON:\\n%s\\nto match the type\\n%s\"))(unexpectedJson)(expectedType);\n }\n }\n }\n case 45:\n return undefined;\n case 46:\n return (some)(Convert_fromJsonAs(jsonValue_5, optionalTypeDelayed_5()));\n case 47:\n return parse_6(value_49);\n case 48:\n return ((value_51) => toInt64(fromInt32(value_51)))(~~value_50);\n case 49: {\n const get$ = (key) => tryFind(key, dict);\n const _arg_2 = choose((x_1) => x_1, ofArray([get$(\"low\"), get$(\"high\"), get$(\"unsigned\")]));\n let matchResult_4, high, low;\n if (!isEmpty(_arg_2)) {\n if (head(_arg_2).tag === 0) {\n if (!isEmpty(tail_1(_arg_2))) {\n if (head(tail_1(_arg_2)).tag === 0) {\n if (!isEmpty(tail_1(tail_1(_arg_2)))) {\n if (head(tail_1(tail_1(_arg_2))).tag === 2) {\n if (isEmpty(tail_1(tail_1(tail_1(_arg_2))))) {\n matchResult_4 = 0;\n high = head(tail_1(_arg_2)).fields[0];\n low = head(_arg_2).fields[0];\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n switch (matchResult_4) {\n case 0:\n return toInt64_1(concat([getBytesInt32(~~low), getBytesInt32(~~high)], Uint8Array), 0);\n default:\n return toFail(printf(\"Unable to construct int64 from object literal { low: int, high: int, unsigned: bool }\"));\n }\n }\n case 50: {\n const patternInput_3 = getTypes_2();\n const caseTypes = patternInput_3[0];\n const _arg_3 = tryFind_1((case$_6) => (case$_6.CaseName === Convert_removeQuotes(caseName_4)), caseTypes);\n if (_arg_3 == null) {\n const expectedCases_2 = join(\", \", map_2((case$_7) => toText(printf(\" \\'%s\\' \"))(case$_7.CaseName), caseTypes));\n const arg_33 = name_2(patternInput_3[1]);\n return toFail(printf(\"Case %s was not valid for type \\'%s\\', expected one of the cases [%s]\"))(caseName_4)(arg_33)(expectedCases_2);\n }\n else {\n return makeUnion(_arg_3.Info, []);\n }\n }\n case 51: {\n const patternInput_4 = getTypes_3();\n const caseTypes_1 = patternInput_4[0];\n const _arg_4 = tryFind_1((case$_8) => (case$_8.CaseName === caseName_5), caseTypes_1);\n if (_arg_4 == null) {\n const expectedCases_3 = join(\", \", map_2((case$_9) => toText(printf(\" \\'%s\\' \"))(case$_9.CaseName), caseTypes_1));\n const arg_37 = name_2(patternInput_4[1]);\n return toFail(printf(\"Case %s was not valid for type \\'%s\\', expected one of the cases [%s]\"))(caseName_5)(arg_37)(expectedCases_3);\n }\n else {\n return makeUnion(_arg_4.Info, []);\n }\n }\n case 52: {\n input_mut = SimpleJson_parse(serializedRecord);\n typeInfo_mut = typeInfo;\n continue Convert_fromJsonAs;\n }\n case 53: {\n const patternInput_5 = getTypes_4();\n const cases_1 = patternInput_5[0];\n let matchResult_5, caseName_6, caseName_8, values_3, otherwise_6;\n if (!isEmpty(caseValue)) {\n if (head(caseValue).tag === 1) {\n if (isEmpty(tail_1(caseValue))) {\n matchResult_5 = 0;\n caseName_6 = head(caseValue).fields[0];\n }\n else {\n matchResult_5 = 1;\n caseName_8 = head(caseValue).fields[0];\n values_3 = tail_1(caseValue);\n }\n }\n else {\n matchResult_5 = 2;\n otherwise_6 = caseValue;\n }\n }\n else {\n matchResult_5 = 2;\n otherwise_6 = caseValue;\n }\n switch (matchResult_5) {\n case 0: {\n const _arg_5 = tryFind_1((case$_10) => (case$_10.CaseName === caseName_6), cases_1);\n if (_arg_5 == null) {\n const expectedCases_4 = join(\", \", map_2((case$_11) => toText(printf(\" \\'%s\\' \"))(case$_11.CaseName), cases_1));\n const arg_41 = name_2(patternInput_5[1]);\n return toFail(printf(\"Case \\'%s\\' was not valid for type \\'%s\\', expected one of the cases [%s]\"))(caseName_6)(arg_41)(expectedCases_4);\n }\n else {\n const caseName_7 = _arg_5.CaseName;\n const caseInfoTypes = _arg_5.CaseTypes;\n return makeUnion(_arg_5.Info, []);\n }\n }\n case 1: {\n const _arg_6 = tryFind_1((case$_12) => (case$_12.CaseName === caseName_8), cases_1);\n if (_arg_6 != null) {\n const types = _arg_6.CaseTypes;\n const foundCaseName = _arg_6.CaseName;\n const caseInfo_4 = _arg_6.Info;\n if (types.length !== length(values_3)) {\n toFail(printf(\"The number of union case parameters for \\'%s\\' is different\"))(foundCaseName);\n }\n return makeUnion(caseInfo_4, map_2((tupledArg_1) => Convert_fromJsonAs(tupledArg_1[1], tupledArg_1[0]), zip(types, toArray(values_3))));\n }\n else {\n const expectedCases_5 = join(\", \", map_2((_arg_7) => _arg_7.CaseName, cases_1));\n return toFail(printf(\"Case %s was not valid, expected one of [%s]\"))(caseName_8)(expectedCases_5);\n }\n }\n default: {\n const unexpectedJson_1 = JSON.stringify(otherwise_6);\n const expectedType_1 = JSON.stringify(cases_1);\n return toFail(printf(\"Expected JSON:\\n%s\\nto match the type\\n%s\"))(unexpectedJson_1)(expectedType_1);\n }\n }\n }\n case 54: {\n const elementType = elementTypeDelayed();\n return toArray(map_3((value_55) => Convert_fromJsonAs(value_55, elementType), values_4));\n }\n case 55: {\n const elementType_1 = elementTypeDelayed_1();\n return map_3((value_57) => Convert_fromJsonAs(value_57, elementType_1), values_5);\n }\n case 56: {\n const elementType_2 = elementTypeDelayed_2();\n return map_3((value_59) => Convert_fromJsonAs(value_59, elementType_2), Convert_flattenFable3Lists(linkedList));\n }\n case 57: {\n const elementType_3 = elementTypeDelayed_3();\n return ofList_1(map_3((value_61) => Convert_fromJsonAs(value_61, elementType_3), values_6), {\n Compare: compare,\n });\n }\n case 58: {\n const elementType_4 = elementTypeDelayed_4();\n return map_3((value_63) => Convert_fromJsonAs(value_63, elementType_4), values_7);\n }\n case 59:\n return map_2((tupledArg_2) => Convert_fromJsonAs(tupledArg_2[1], tupledArg_2[0]), zip(tupleTypesDelayed(), toArray(array_12)));\n case 60: {\n const patternInput_6 = getTypes_5();\n const recordType = patternInput_6[1];\n const fields = patternInput_6[0];\n return makeRecord(recordType, (values_8 = toList_1(dict_1), map_2((_arg_8) => {\n let list_10, f2, clo_48;\n const fieldType = _arg_8.FieldType;\n const fieldName = _arg_8.FieldName;\n const _arg_9 = tryFind_2((tupledArg_3) => (fieldName === tupledArg_3[0]), values_8);\n if (_arg_9 == null) {\n if (fieldType.tag === 27) {\n return undefined;\n }\n else {\n let dictKeys;\n const arg_50 = join(\", \", (list_10 = toList_1(dict_1), map_3((f2 = ((clo_48 = toText(printf(\"\\'%s\\'\")), clo_48)), (arg_49) => f2(arg_49[0])), list_10)));\n dictKeys = toText(printf(\"[ %s ]\"))(arg_50);\n let recordFields;\n const arg_53 = join(\", \", map_2((_arg_10) => {\n const name_1 = _arg_10.FieldName;\n if (_arg_10.FieldType.tag === 27) {\n return toText(printf(\"optional(\\'%s\\')\"))(name_1);\n }\n else {\n return toText(printf(\"required(\\'%s\\')\"))(name_1);\n }\n }, fields));\n recordFields = toText(printf(\"[ %s ]\"))(arg_53);\n const arg_56 = name_2(recordType);\n return toFail(printf(\"Could not find the required key \\'%s\\' in the JSON object literal with keys %s to match with record type \\'%s\\' that has fields %s\"))(fieldName)(dictKeys)(arg_56)(recordFields);\n }\n }\n else {\n const key_2 = _arg_9[0];\n return Convert_fromJsonAs(_arg_9[1], fieldType);\n }\n }, fields)));\n }\n case 61: {\n const patternInput_7 = getTypes_6();\n const keyType = patternInput_7[0];\n const pairs = toList(delay(() => collect((keyValuePair) => {\n let a;\n return singleton_1(Convert_fromJsonAs(keyValuePair, new TypeInfo(32, [(a = [keyType, patternInput_7[1]], () => a)])));\n }, tuples)));\n switch (keyType.tag) {\n case 6:\n case 2:\n case 7:\n return ofList(pairs, {\n Compare: comparePrimitives,\n });\n default:\n return ofList(pairs, {\n Compare: compare,\n });\n }\n }\n case 62: {\n const patternInput_8 = getTypes_7();\n const keyType_1 = patternInput_8[0];\n const pairs_1 = toList(delay(() => collect((keyValuePair_1) => singleton_1(Convert_fromJsonAs(keyValuePair_1, new TypeInfo(32, [() => [keyType_1, patternInput_8[1]]]))), tuples_1)));\n const output = (keyType_1.tag === 40) ? (new Dictionary([], {\n Equals: equals,\n GetHashCode: safeHash,\n })) : ((keyType_1.tag === 39) ? (new Dictionary([], {\n Equals: equals,\n GetHashCode: structuralHash,\n })) : (new Dictionary([], {\n Equals: equals,\n GetHashCode: structuralHash,\n })));\n const enumerator = getEnumerator(pairs_1);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n addToDict(output, forLoopVar[0], forLoopVar[1]);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return output;\n }\n case 63: {\n const patternInput_9 = getTypes_8();\n const keyType_2 = patternInput_9[0];\n const pairs_2 = map_3((tupledArg_4) => [Convert_fromJsonAs(new Json(1, [tupledArg_4[0]]), keyType_2), Convert_fromJsonAs(tupledArg_4[1], patternInput_9[1])], toList_1(dict_2));\n const output_1 = (keyType_2.tag === 40) ? (new Dictionary([], {\n Equals: equals,\n GetHashCode: safeHash,\n })) : ((keyType_2.tag === 39) ? (new Dictionary([], {\n Equals: equals,\n GetHashCode: structuralHash,\n })) : (new Dictionary([], {\n Equals: equals,\n GetHashCode: structuralHash,\n })));\n const enumerator_1 = getEnumerator(pairs_2);\n try {\n while (enumerator_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar_1 = enumerator_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n addToDict(output_1, forLoopVar_1[0], forLoopVar_1[1]);\n }\n }\n finally {\n disposeSafe(enumerator_1);\n }\n return output_1;\n }\n case 64: {\n const elemType_1 = getType();\n const hashset = (elemType_1.tag === 40) ? (new HashSet([], {\n Equals: equals,\n GetHashCode: safeHash,\n })) : ((elemType_1.tag === 39) ? (new HashSet([], {\n Equals: equals,\n GetHashCode: structuralHash,\n })) : (new HashSet([], {\n Equals: equals,\n GetHashCode: structuralHash,\n })));\n const enumerator_2 = getEnumerator(items);\n try {\n while (enumerator_2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n addToSet(Convert_fromJsonAs(enumerator_2[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), elemType_1), hashset);\n }\n }\n finally {\n disposeSafe(enumerator_2);\n }\n return hashset;\n }\n case 65: {\n const patternInput_10 = getTypes_9();\n const valueType_5 = patternInput_10[1];\n const keyType_3 = patternInput_10[0];\n const matchValue_7 = tryFind(\"comparer\", map);\n const matchValue_8 = tryFind(\"tree\", map);\n let matchResult_6, comparer_2, tree_2, comparer_3, tree_3;\n if (matchValue_7 != null) {\n if (matchValue_7.tag === 5) {\n if (matchValue_8 != null) {\n switch (matchValue_8.tag) {\n case 4: {\n if ((tree = matchValue_8.fields[0], isEmpty_1(matchValue_7.fields[0]))) {\n matchResult_6 = 0;\n comparer_2 = matchValue_7.fields[0];\n tree_2 = matchValue_8.fields[0];\n }\n else {\n matchResult_6 = 2;\n }\n break;\n }\n case 5: {\n if ((tree_1 = matchValue_8.fields[0], isEmpty_1(matchValue_7.fields[0]))) {\n matchResult_6 = 1;\n comparer_3 = matchValue_7.fields[0];\n tree_3 = matchValue_8.fields[0];\n }\n else {\n matchResult_6 = 2;\n }\n break;\n }\n default:\n matchResult_6 = 2;\n }\n }\n else {\n matchResult_6 = 2;\n }\n }\n else {\n matchResult_6 = 2;\n }\n }\n else {\n matchResult_6 = 2;\n }\n switch (matchResult_6) {\n case 0: {\n const matchValue_10 = Convert_generateMap(new Json(4, [tree_2]));\n if (matchValue_10 == null) {\n const inputJson = SimpleJson_toString(new Json(4, [tree_2]));\n return toFail(printf(\"Could not generate map from JSON\\n %s\"))(inputJson);\n }\n else {\n const pairs_3 = map_3((tupledArg_5) => {\n const key_6 = tupledArg_5[0];\n return [!Convert_isQuoted(key_6) ? Convert_fromJsonAs(new Json(1, [key_6]), keyType_3) : Convert_fromJsonAs(SimpleJson_parseNative(key_6), keyType_3), Convert_fromJsonAs(tupledArg_5[1], valueType_5)];\n }, Convert_flattenMap(matchValue_10));\n switch (keyType_3.tag) {\n case 6:\n case 2:\n case 7:\n return ofList(pairs_3, {\n Compare: comparePrimitives,\n });\n default:\n return ofList(pairs_3, {\n Compare: compare,\n });\n }\n }\n }\n case 1: {\n input_mut = (new Json(5, [ofList(Convert_flatteFable3Map(tree_3), {\n Compare: comparePrimitives,\n })]));\n typeInfo_mut = typeInfo;\n continue Convert_fromJsonAs;\n }\n default: {\n const pairs_4 = map_3((tupledArg_6) => {\n const key_7 = tupledArg_6[0];\n return [!Convert_isQuoted(key_7) ? ((isPrimitive(keyType_3) ? true : enumUnion(keyType_3)) ? Convert_fromJsonAs(new Json(1, [key_7]), keyType_3) : Convert_fromJsonAs(SimpleJson_parseNative(key_7), keyType_3)) : Convert_fromJsonAs(SimpleJson_parseNative(key_7), keyType_3), Convert_fromJsonAs(tupledArg_6[1], valueType_5)];\n }, toList_1(map));\n switch (keyType_3.tag) {\n case 6:\n case 2:\n case 7:\n return ofList(pairs_4, {\n Compare: comparePrimitives,\n });\n default:\n return ofList(pairs_4, {\n Compare: compare,\n });\n }\n }\n }\n }\n case 66: {\n const unknownType = getType_1();\n const arg_59 = SimpleJson_toString(input);\n const arg_60 = fullName(unknownType);\n return toFail(printf(\"Cannot convert %s to %s\"))(arg_59)(arg_60);\n }\n default: {\n const arg_61 = SimpleJson_toString(input);\n const arg_62 = JSON.stringify(typeInfo);\n return toFail(printf(\"Cannot convert %s to %s\"))(arg_61)(arg_62);\n }\n }\n break;\n }\n}\n\nexport function Convert_fromJson(json, typeInfo) {\n return Convert_fromJsonAs(json, typeInfo);\n}\n\nexport const Convert_quoteText = quote;\n\nexport function Convert_serialize(value_mut, typeInfo_mut) {\n let copyOfStruct;\n Convert_serialize:\n while (true) {\n const value = value_mut, typeInfo = typeInfo_mut;\n switch (typeInfo.tag) {\n case 2: {\n const content = value;\n if (content == null) {\n return \"null\";\n }\n else {\n return Convert_quoteText(content);\n }\n }\n case 0:\n return \"null\";\n case 9:\n case 8:\n if (Number.isNaN(value)) {\n return Convert_quoteText(\"NaN\");\n }\n else {\n return value.toString();\n }\n case 1:\n return Convert_quoteText(value);\n case 13:\n case 14:\n case 3:\n case 4:\n case 11:\n case 38:\n case 20:\n case 6:\n return int32ToString(value);\n case 5:\n case 12:\n return Convert_betweenQuotes(int64ToString(value));\n case 19:\n return Convert_betweenQuotes(toString(value));\n case 10:\n return Convert_betweenQuotes(toString_1(value));\n case 7:\n if (value) {\n return \"true\";\n }\n else {\n return \"false\";\n }\n case 21:\n return Convert_betweenQuotes((copyOfStruct = value, copyOfStruct));\n case 22:\n return Convert_betweenQuotes(toString_2(value));\n case 15:\n return Convert_betweenQuotes(toString_3(value, \"O\"));\n case 16:\n return Convert_betweenQuotes(toString_3(value, \"O\"));\n case 17:\n return int32ToString(dayNumber(value));\n case 18:\n return Convert_betweenQuotes(int64ToString(ticks(value)));\n case 39:\n return (\"{\" + join(\", \", map_2((field) => {\n const arg_1 = Convert_serialize(getRecordField(value, field.PropertyInfo), field.FieldType);\n return toText(printf(\"\\\"%s\\\": %s\"))(field.FieldName)(arg_1);\n }, typeInfo.fields[0]()[0]))) + \"}\";\n case 35: {\n const elementType = typeInfo.fields[0]();\n return (\"[\" + join(\", \", map_4((element) => Convert_serialize(element, elementType), value))) + \"]\";\n }\n case 36: {\n const elementType_1 = typeInfo.fields[0]();\n return (\"[\" + join(\", \", map_4((element_1) => Convert_serialize(element_1, elementType_1), value))) + \"]\";\n }\n case 29: {\n const elementType_2 = typeInfo.fields[0]();\n return (\"[\" + join(\", \", map_4((element_2) => Convert_serialize(element_2, elementType_2), value))) + \"]\";\n }\n case 30: {\n const elementType_3 = typeInfo.fields[0]();\n return (\"[\" + join(\", \", map_2((element_3) => Convert_serialize(element_3, elementType_3), value))) + \"]\";\n }\n case 28: {\n const elementType_4 = typeInfo.fields[0]();\n return (\"[\" + join(\", \", map_3((element_4) => Convert_serialize(element_4, elementType_4), value))) + \"]\";\n }\n case 31: {\n const elementType_5 = typeInfo.fields[0]();\n return (\"[\" + join(\", \", map_2((element_5) => Convert_serialize(element_5, elementType_5), toArray_1(value)))) + \"]\";\n }\n case 27: {\n const matchValue = value;\n if (matchValue != null) {\n value_mut = value_91(matchValue);\n typeInfo_mut = typeInfo.fields[0]();\n continue Convert_serialize;\n }\n else {\n return \"null\";\n }\n }\n case 40: {\n const patternInput_1 = typeInfo.fields[0]();\n const patternInput_2 = getUnionFields(value, patternInput_1[1]);\n const usedCase = patternInput_2[0];\n const fields = patternInput_2[1];\n const caseTypes = find_1((case$) => (case$.CaseName === name_2(usedCase)), patternInput_1[0]).CaseTypes;\n if (enumUnion(typeInfo) ? true : (caseTypes.length === 0)) {\n return Convert_betweenQuotes(name_2(usedCase));\n }\n else if (caseTypes.length === 1) {\n return (((\"{\" + Convert_betweenQuotes(name_2(usedCase))) + \": \") + Convert_serialize(item_1(0, fields), item_1(0, caseTypes))) + \"}\";\n }\n else {\n const serializedFields_1 = join(\", \", mapIndexed((index, caseType) => Convert_serialize(item_1(index, fields), caseType), caseTypes));\n return ((((\"{\" + Convert_betweenQuotes(name_2(usedCase))) + \": \") + \"[\") + serializedFields_1) + \"] }\";\n }\n }\n case 33: {\n const patternInput_3 = typeInfo.fields[0]();\n const keyType = patternInput_3[0];\n const serializedValues = join(\", \", map_2((tupledArg) => {\n const serializedKey = Convert_serialize(tupledArg[0], keyType);\n const serializedValue = Convert_serialize(tupledArg[1], patternInput_3[1]);\n if (isPrimitive(keyType) ? true : enumUnion(keyType)) {\n if (!Convert_isQuoted(serializedKey)) {\n return (Convert_quoteText(serializedKey) + \": \") + serializedValue;\n }\n else {\n return (serializedKey + \": \") + serializedValue;\n }\n }\n else {\n return (((\"[\" + serializedKey) + \", \") + serializedValue) + \"]\";\n }\n }, toArray_2(value)));\n if (isPrimitive(keyType) ? true : enumUnion(keyType)) {\n return (\"{\" + serializedValues) + \"}\";\n }\n else {\n return (\"[\" + serializedValues) + \"]\";\n }\n }\n case 34: {\n const patternInput_4 = typeInfo.fields[0]();\n const keyType_1 = patternInput_4[0];\n const serializedValues_1 = join(\", \", map_4((pair) => {\n const serializedKey_1 = Convert_serialize(pair[0], keyType_1);\n const serializedValue_1 = Convert_serialize(pair[1], patternInput_4[1]);\n if (isPrimitive(keyType_1) ? true : enumUnion(keyType_1)) {\n if (!Convert_isQuoted(serializedKey_1)) {\n return (Convert_betweenQuotes(serializedKey_1) + \": \") + serializedValue_1;\n }\n else {\n return (serializedKey_1 + \": \") + serializedValue_1;\n }\n }\n else {\n return (((\"[\" + serializedKey_1) + \", \") + serializedValue_1) + \"]\";\n }\n }, value));\n if (isPrimitive(keyType_1) ? true : enumUnion(keyType_1)) {\n return (\"{\" + serializedValues_1) + \"}\";\n }\n else {\n return (\"[\" + serializedValues_1) + \"]\";\n }\n }\n case 32: {\n const tupleTypes = typeInfo.fields[0]();\n if (tupleTypes.length === 1) {\n return (\"[\" + Convert_serialize(value, item_1(0, tupleTypes))) + \"]\";\n }\n else {\n return (\"[\" + join(\", \", mapIndexed((index_1, element_6) => Convert_serialize(element_6, item_1(index_1, tupleTypes)), value))) + \"]\";\n }\n }\n case 23:\n return SimpleJson_stringify(value);\n case 24:\n return SimpleJson_stringify(value);\n default:\n return \"null\";\n }\n break;\n }\n}\n\n/**\n * Serialized the input value object into JSON, uses built-in JSON.stringify and should be used with Fable 2.x or earlier\n */\nexport function Fable_SimpleJson_Json__Json_stringify_Static_4E60E31B(value) {\n if (Convert_isUsingFable3) {\n console.warn(some(\"It looks like you using the function Json.stringify from Fable.SimpleJson while also using Fable 3 (nagareyama). Please use Json.serialize instead which supports both Fable 3 and Fable 2.x\"));\n }\n return SimpleJson_stringify(value);\n}\n\n","export default function isBrowser() {\n return typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n}","import { hours, minutes, seconds, milliseconds } from \"./TimeSpan.js\";\nimport { padWithZeros } from \"./Util.js\";\nconst millisecondsPerDay = 86400000;\nexport function create(h = 0, m = 0, s = 0, ms = 0) {\n if (h < 0 || m < 0 || s < 0 || ms < 0)\n throw new Error(\"The parameters describe an unrepresentable TimeOnly.\");\n return h * 3600000 + m * 60000 + s * 1000 + ms;\n}\nexport function fromTicks(ticks) {\n return Number(BigInt(ticks) / 10000n);\n}\nexport function fromTimeSpan(timeSpan) {\n if (timeSpan < 0 || timeSpan >= millisecondsPerDay)\n throw new Error(\"The TimeSpan describes an unrepresentable TimeOnly.\");\n return timeSpan;\n}\nexport function fromDateTime(d) {\n return d.kind === 1 /* DateKind.UTC */\n ? create(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds())\n : create(d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n}\nexport function maxValue() {\n // This is \"23:59:59.999\"\n return millisecondsPerDay - 1;\n}\nexport function add(t, ts, wrappedDays) {\n if (wrappedDays === undefined) {\n const t2 = (t + ts) % millisecondsPerDay;\n return t2 < 0 ? millisecondsPerDay + t2 : t2;\n }\n wrappedDays.contents = ts / millisecondsPerDay;\n let newMs = t + ts % millisecondsPerDay;\n if (newMs < 0) {\n wrappedDays.contents--;\n newMs += millisecondsPerDay;\n }\n else {\n if (newMs >= millisecondsPerDay) {\n wrappedDays.contents++;\n newMs -= millisecondsPerDay;\n }\n }\n return newMs;\n}\nexport function addHours(t, h) {\n return add(t, h * 3600000);\n}\nexport function addMinutes(t, m) {\n return add(t, m * 60000);\n}\nexport function isBetween(t, start, end) {\n return start <= end\n ? (start <= t && end > t)\n : (start <= t || end > t);\n}\nexport function toString(t, format = \"t\", _provider) {\n if ([\"r\", \"R\", \"o\", \"O\", \"t\", \"T\"].indexOf(format) === -1) {\n throw new Error(\"Custom formats are not supported\");\n }\n const base = `${padWithZeros(hours(t), 2)}:${padWithZeros(minutes(t), 2)}`;\n if (format === \"t\")\n return base;\n const s = padWithZeros(seconds(t), 2);\n // We're limited to millisecond precision, so the last 4 digits will always be 0\n return `${base}${format === \"o\" || format === \"O\" ? `:${s}.${padWithZeros(milliseconds(t), 3)}0000` : `:${s}`}`;\n}\nexport function parse(str) {\n // Allowed format types:\n // hh:mm\n // hh:mm:ss\n // hh:mm:ss.fffffff\n const r = /^\\s*([0-1]?\\d|2[0-3])\\s*:\\s*([0-5]?\\d)(\\s*:\\s*([0-5]?\\d)(\\.(\\d+))?)?\\s*$/.exec(str);\n if (r != null && r[1] != null && r[2] != null) {\n let ms = 0;\n let s = 0;\n const h = +r[1];\n const m = +r[2];\n if (r[4] != null) {\n s = +r[4];\n }\n if (r[6] != null) {\n // Depending on the number of decimals passed, we need to adapt the numbers\n switch (r[6].length) {\n case 1:\n ms = +r[6] * 100;\n break;\n case 2:\n ms = +r[6] * 10;\n break;\n case 3:\n ms = +r[6];\n break;\n case 4:\n ms = +r[6] / 10;\n break;\n case 5:\n ms = +r[6] / 100;\n break;\n case 6:\n ms = +r[6] / 1000;\n break;\n default:\n ms = +r[6].substring(0, 7) / 10000;\n break;\n }\n }\n return create(h, m, s, Math.trunc(ms));\n }\n throw new Error(`String '${str}' was not recognized as a valid TimeOnly.`);\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function op_Subtraction(left, right) {\n return add(left, -right);\n}\n","export default function quote(inputText) {\n var escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n var meta = {\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n }\n\n escapable.lastIndex = 0;\n return escapable.test(inputText) ?\n '\"' + inputText.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' :\n '\"' + inputText + '\"';\n}","import { Union, Record } from \"../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { union_type, string_type, int32_type, record_type, float64_type } from \"../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { printf, toFail, interpolate, toText } from \"../fable_modules/fable-library-js.4.19.3/String.js\";\nimport { empty, singleton, ofArray } from \"../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { defaultArgWith } from \"../fable_modules/fable-library-js.4.19.3/Option.js\";\n\nexport class Wind extends Record {\n constructor(Direction, Speed) {\n super();\n this.Direction = Direction;\n this.Speed = Speed;\n }\n}\n\nexport function Wind_$reflection() {\n return record_type(\"StenaWeather.Domain.Weather.Wind\", [], Wind, () => [[\"Direction\", float64_type], [\"Speed\", float64_type]]);\n}\n\nexport class Current extends Record {\n constructor(Direction, Speed) {\n super();\n this.Direction = Direction;\n this.Speed = Speed;\n }\n}\n\nexport function Current_$reflection() {\n return record_type(\"StenaWeather.Domain.Weather.Current\", [], Current, () => [[\"Direction\", float64_type], [\"Speed\", float64_type]]);\n}\n\nexport class Waves extends Record {\n constructor(Direction, Height, Period) {\n super();\n this.Direction = Direction;\n this.Height = Height;\n this.Period = Period;\n }\n}\n\nexport function Waves_$reflection() {\n return record_type(\"StenaWeather.Domain.Weather.Waves\", [], Waves, () => [[\"Direction\", float64_type], [\"Height\", float64_type], [\"Period\", float64_type]]);\n}\n\nexport class Tide extends Record {\n constructor(Sealevel) {\n super();\n this.Sealevel = Sealevel;\n }\n}\n\nexport function Tide_$reflection() {\n return record_type(\"StenaWeather.Domain.Weather.Tide\", [], Tide, () => [[\"Sealevel\", float64_type]]);\n}\n\nexport class Swell extends Record {\n constructor(Direction, Height, Period) {\n super();\n this.Direction = Direction;\n this.Height = Height;\n this.Period = Period;\n }\n}\n\nexport function Swell_$reflection() {\n return record_type(\"StenaWeather.Domain.Weather.Swell\", [], Swell, () => [[\"Direction\", float64_type], [\"Height\", float64_type], [\"Period\", float64_type]]);\n}\n\nexport class Clouds extends Record {\n constructor(Coverage) {\n super();\n this.Coverage = Coverage;\n }\n}\n\nexport function Clouds_$reflection() {\n return record_type(\"StenaWeather.Domain.Weather.Clouds\", [], Clouds, () => [[\"Coverage\", float64_type]]);\n}\n\nexport class AirTemperature extends Record {\n constructor(Temperature) {\n super();\n this.Temperature = Temperature;\n }\n}\n\nexport function AirTemperature_$reflection() {\n return record_type(\"StenaWeather.Domain.Weather.AirTemperature\", [], AirTemperature, () => [[\"Temperature\", float64_type]]);\n}\n\nexport class Precipitation extends Record {\n constructor(Precipitation) {\n super();\n this.Precipitation = Precipitation;\n }\n}\n\nexport function Precipitation_$reflection() {\n return record_type(\"StenaWeather.Domain.Weather.Precipitation\", [], Precipitation, () => [[\"Precipitation\", float64_type]]);\n}\n\nexport function PrecipitationCategoryTypeModule_value(_arg) {\n switch (_arg) {\n case 0:\n return \"No precipitation\";\n case 1:\n return \"Snow\";\n case 2:\n return \"Snow and rain\";\n case 3:\n return \"Rain\";\n case 4:\n return \"Drizzle\";\n case 5:\n return \"Freezing rain\";\n case 6:\n return \"Freezing drizzle\";\n default:\n throw new Error(toText(interpolate(\"Invalid PrecipitationCategoryType: %A%P()\", [_arg])));\n }\n}\n\nexport class PrecipitationCategory extends Record {\n constructor(Category, Description) {\n super();\n this.Category = (Category | 0);\n this.Description = Description;\n }\n}\n\nexport function PrecipitationCategory_$reflection() {\n return record_type(\"StenaWeather.Domain.Weather.PrecipitationCategory\", [], PrecipitationCategory, () => [[\"Category\", int32_type], [\"Description\", string_type]]);\n}\n\nexport function WeatherSymbolTypeModule_value(_arg) {\n switch (_arg) {\n case 1:\n return \"Clear sky\";\n case 2:\n return \"Nearly clear sky\";\n case 3:\n return \"Variable cloudiness\";\n case 4:\n return \"Half clear sky\";\n case 5:\n return \"Cloudy sky\";\n case 6:\n return \"Overcast\";\n case 7:\n return \"Fog\";\n case 8:\n return \"Light rain showers\";\n case 9:\n return \"Moderate rain showers\";\n case 10:\n return \"Heavy rain showers\";\n case 11:\n return \"Thunderstorm\";\n case 12:\n return \"Light sleet showers\";\n case 13:\n return \"Moderate sleet showers\";\n case 14:\n return \"Heavy sleet showers\";\n case 15:\n return \"Light snow showers\";\n case 16:\n return \"Moderate snow showers\";\n case 17:\n return \"Heavy snow showers\";\n case 18:\n return \"Light rain\";\n case 19:\n return \"Moderate rain\";\n case 20:\n return \"Heavy rain\";\n case 21:\n return \"Thunder\";\n case 22:\n return \"Light sleet\";\n case 23:\n return \"Moderate sleet\";\n case 24:\n return \"Heavy sleet\";\n case 25:\n return \"Light snowfall\";\n case 26:\n return \"Moderate snowfall\";\n case 27:\n return \"Heavy snowfall\";\n default:\n throw new Error(`invalid WeatherSymbolType: ${_arg}`);\n }\n}\n\nexport class WeatherSymbol extends Record {\n constructor(Code, Description) {\n super();\n this.Code = (Code | 0);\n this.Description = Description;\n }\n}\n\nexport function WeatherSymbol_$reflection() {\n return record_type(\"StenaWeather.Domain.Weather.WeatherSymbol\", [], WeatherSymbol, () => [[\"Code\", int32_type], [\"Description\", string_type]]);\n}\n\nexport class WeatherType extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Wind10m\", \"Wind50m\", \"Current\", \"Waves\", \"Tide\", \"PrimarySwell\", \"SecondarySwell\", \"WindWaves\", \"Clouds\", \"AirTemperature\", \"Precipitation\", \"PrecipitationCategory\", \"WeatherSymbol\"];\n }\n}\n\nexport function WeatherType_$reflection() {\n return union_type(\"StenaWeather.Domain.Weather.WeatherType\", [], WeatherType, () => [[[\"Item\", Wind_$reflection()]], [[\"Item\", Wind_$reflection()]], [[\"Item\", Current_$reflection()]], [[\"Item\", Waves_$reflection()]], [[\"Item\", Tide_$reflection()]], [[\"Item\", Swell_$reflection()]], [[\"Item\", Swell_$reflection()]], [[\"Item\", Waves_$reflection()]], [[\"Item\", Clouds_$reflection()]], [[\"Item\", AirTemperature_$reflection()]], [[\"Item\", Precipitation_$reflection()]], [[\"Item\", PrecipitationCategory_$reflection()]], [[\"Item\", WeatherSymbol_$reflection()]]]);\n}\n\nexport function WeatherTypeModule_createWind10m(direction, speed) {\n return new WeatherType(0, [new Wind(direction, speed)]);\n}\n\nexport function WeatherTypeModule_createCurrent(direction, speed) {\n return new WeatherType(2, [new Current(direction, speed)]);\n}\n\nexport function WeatherTypeModule_createWaves(direction, height, period) {\n return new WeatherType(3, [new Waves(direction, height, period)]);\n}\n\nexport function WeatherTypeModule_createTide(sealevel) {\n return new WeatherType(4, [new Tide(sealevel)]);\n}\n\nexport function WeatherTypeModule_createPrimarySwell(direction, height, period) {\n return new WeatherType(5, [new Swell(direction, height, period)]);\n}\n\nexport function WeatherTypeModule_createSecondarySwell(direction, height, period) {\n return new WeatherType(6, [new Swell(direction, height, period)]);\n}\n\nexport function WeatherTypeModule_createWindWaves(direction, height, period) {\n return new WeatherType(7, [new Waves(direction, height, period)]);\n}\n\nexport function WeatherTypeModule_createClouds(cover) {\n return new WeatherType(8, [new Clouds(cover)]);\n}\n\nexport function WeatherTypeModule_createAirTemperature(temperature) {\n return new WeatherType(9, [new AirTemperature(temperature)]);\n}\n\nexport function WeatherTypeModule_createPrecipitation(precip) {\n return new WeatherType(10, [new Precipitation(precip)]);\n}\n\nexport function WeatherTypeModule_createPrecipitationCategory(cat) {\n return new WeatherType(11, [new PrecipitationCategory(cat, PrecipitationCategoryTypeModule_value(cat))]);\n}\n\nexport function WeatherTypeModule_createWeatherSymbol(symbol) {\n return new WeatherType(12, [new WeatherSymbol(symbol, WeatherSymbolTypeModule_value(symbol))]);\n}\n\nexport function WeatherTypeModule_tryGetWind10m(_arg) {\n if (_arg.tag === 0) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_tryGetWind50m(_arg) {\n if (_arg.tag === 1) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_tryGetCurrent(_arg) {\n if (_arg.tag === 2) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_tryGetWave(_arg) {\n if (_arg.tag === 3) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_tryGetTide(_arg) {\n if (_arg.tag === 4) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_tryGetPrimarySwell(_arg) {\n if (_arg.tag === 5) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_tryGetSecondarySwell(_arg) {\n if (_arg.tag === 6) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_tryGetWindWaves(_arg) {\n if (_arg.tag === 7) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_tryGetClouds(_arg) {\n if (_arg.tag === 8) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_tryGetAirTemperature(_arg) {\n if (_arg.tag === 9) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_tryGetPrecipitation(_arg) {\n if (_arg.tag === 10) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_tryGetPrecipitationCategory(_arg) {\n if (_arg.tag === 11) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_tryGetWeatherSymbol(_arg) {\n if (_arg.tag === 12) {\n return _arg.fields[0];\n }\n else {\n throw new Error(`Invalid weather type: ${_arg}`);\n }\n}\n\nexport function WeatherTypeModule_getValues(_arg) {\n switch (_arg.tag) {\n case 1: {\n const w_1 = _arg.fields[0];\n return ofArray([w_1.Direction, w_1.Speed]);\n }\n case 2: {\n const w_2 = _arg.fields[0];\n return ofArray([w_2.Direction, w_2.Speed]);\n }\n case 3: {\n const w_3 = _arg.fields[0];\n return ofArray([w_3.Direction, w_3.Height, w_3.Period]);\n }\n case 4:\n return singleton(_arg.fields[0].Sealevel);\n case 5: {\n const w_5 = _arg.fields[0];\n return ofArray([w_5.Direction, w_5.Height, w_5.Period]);\n }\n case 6: {\n const w_6 = _arg.fields[0];\n return ofArray([w_6.Direction, w_6.Height, w_6.Period]);\n }\n case 7: {\n const w_7 = _arg.fields[0];\n return ofArray([w_7.Direction, w_7.Height, w_7.Period]);\n }\n case 8:\n return singleton(_arg.fields[0].Coverage);\n case 9:\n return singleton(_arg.fields[0].Temperature);\n case 10:\n return singleton(_arg.fields[0].Precipitation);\n case 11:\n return singleton(_arg.fields[0].Category);\n case 12:\n return empty();\n default: {\n const w = _arg.fields[0];\n return ofArray([w.Direction, w.Speed]);\n }\n }\n}\n\nexport const WeatherTypeModule_checkValue = (() => {\n const checkDir = (x) => {\n if (x <= 360) {\n return x >= 0;\n }\n else {\n return false;\n }\n };\n const checkSpeed = (x_1) => {\n if (x_1 > 0) {\n return x_1 < 50;\n }\n else {\n return false;\n }\n };\n const checkHeight = (x_2) => {\n if (x_2 >= 0) {\n return x_2 < 50;\n }\n else {\n return false;\n }\n };\n const checkPeriod = (x_4) => {\n if (x_4 >= 0) {\n return x_4 < 50;\n }\n else {\n return false;\n }\n };\n const checkPercent = (x_5) => {\n if (x_5 >= 0) {\n return x_5 <= 100;\n }\n else {\n return false;\n }\n };\n return (_arg) => {\n switch (_arg.tag) {\n case 1: {\n const w_1 = _arg.fields[0];\n return checkDir(w_1.Direction) && checkSpeed(w_1.Speed);\n }\n case 2: {\n const w_2 = _arg.fields[0];\n return checkDir(w_2.Direction) && checkSpeed(w_2.Speed);\n }\n case 3: {\n const w_3 = _arg.fields[0];\n return (checkDir(w_3.Direction) && checkHeight(w_3.Height)) && checkPeriod(w_3.Period);\n }\n case 4: {\n const x_3 = _arg.fields[0].Sealevel;\n return (x_3 >= -50) && (x_3 < 50);\n }\n case 5: {\n const w_5 = _arg.fields[0];\n return (checkDir(w_5.Direction) && checkHeight(w_5.Height)) && checkPeriod(w_5.Period);\n }\n case 6: {\n const w_6 = _arg.fields[0];\n return (checkDir(w_6.Direction) && checkHeight(w_6.Height)) && checkPeriod(w_6.Period);\n }\n case 7: {\n const w_7 = _arg.fields[0];\n return (checkDir(w_7.Direction) && checkHeight(w_7.Height)) && checkPeriod(w_7.Period);\n }\n case 8:\n return checkPercent(_arg.fields[0].Coverage);\n case 9:\n return checkPercent(_arg.fields[0].Temperature);\n case 10:\n return checkPercent(_arg.fields[0].Precipitation);\n case 11:\n return checkPercent(_arg.fields[0].Category);\n case 12:\n return checkPercent(_arg.fields[0].Code);\n default: {\n const w = _arg.fields[0];\n return checkDir(w.Direction) && checkSpeed(w.Speed);\n }\n }\n };\n})();\n\nexport function WeatherTypeModule_declaringType(_arg) {\n switch (_arg.tag) {\n case 1:\n return Wind_$reflection();\n case 2:\n return Current_$reflection();\n case 3:\n return Waves_$reflection();\n case 4:\n return Tide_$reflection();\n case 5:\n return Swell_$reflection();\n case 6:\n return Swell_$reflection();\n case 7:\n return Waves_$reflection();\n case 8:\n return Clouds_$reflection();\n case 9:\n return AirTemperature_$reflection();\n case 10:\n return Precipitation_$reflection();\n case 11:\n return PrecipitationCategory_$reflection();\n case 12:\n return WeatherSymbol_$reflection();\n default:\n return Wind_$reflection();\n }\n}\n\nexport class WeatherTypeModule_Parameter extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Wind10mParam\", \"Wind50mParam\", \"CurrentParam\", \"WavesParam\", \"TideParam\", \"PrimarySwellParam\", \"SecondarySwellParam\", \"WindWavesParam\", \"CloudsParam\", \"AirTemperatureParam\", \"PrecipitationParam\", \"WeatherSymbolParam\", \"PrecipitationCategoryParam\"];\n }\n}\n\nexport function WeatherTypeModule_Parameter_$reflection() {\n return union_type(\"StenaWeather.Domain.Weather.WeatherTypeModule.Parameter\", [], WeatherTypeModule_Parameter, () => [[], [], [], [], [], [], [], [], [], [], [], [], []]);\n}\n\nexport class WeatherTypeModule_ParameterAttributeMetadata extends Record {\n constructor(Name, Type, UnitOfMeasure) {\n super();\n this.Name = Name;\n this.Type = Type;\n this.UnitOfMeasure = UnitOfMeasure;\n }\n}\n\nexport function WeatherTypeModule_ParameterAttributeMetadata_$reflection() {\n return record_type(\"StenaWeather.Domain.Weather.WeatherTypeModule.ParameterAttributeMetadata\", [], WeatherTypeModule_ParameterAttributeMetadata, () => [[\"Name\", string_type], [\"Type\", string_type], [\"UnitOfMeasure\", string_type]]);\n}\n\nexport const WeatherTypeModule_ParameterModule_all = ofArray([new WeatherTypeModule_Parameter(0, []), new WeatherTypeModule_Parameter(1, []), new WeatherTypeModule_Parameter(2, []), new WeatherTypeModule_Parameter(3, []), new WeatherTypeModule_Parameter(4, []), new WeatherTypeModule_Parameter(5, []), new WeatherTypeModule_Parameter(6, []), new WeatherTypeModule_Parameter(7, []), new WeatherTypeModule_Parameter(8, []), new WeatherTypeModule_Parameter(9, []), new WeatherTypeModule_Parameter(10, []), new WeatherTypeModule_Parameter(12, []), new WeatherTypeModule_Parameter(11, [])]);\n\nexport function WeatherTypeModule_ParameterModule_metadata(_arg) {\n switch (_arg.tag) {\n case 3:\n case 5:\n case 6:\n case 7:\n return ofArray([new WeatherTypeModule_ParameterAttributeMetadata(\"Direction\", \"float\", \"degree 0-359.9 (nautical standard)\"), new WeatherTypeModule_ParameterAttributeMetadata(\"Height\", \"float\", \"m\"), new WeatherTypeModule_ParameterAttributeMetadata(\"Period\", \"float\", \"s\")]);\n case 4:\n return singleton(new WeatherTypeModule_ParameterAttributeMetadata(\"Sealevel\", \"float\", \"m\"));\n case 8:\n return singleton(new WeatherTypeModule_ParameterAttributeMetadata(\"Coverage\", \"float\", \"fraction\"));\n case 9:\n return singleton(new WeatherTypeModule_ParameterAttributeMetadata(\"Temperature\", \"float\", \"°C\"));\n case 10:\n return singleton(new WeatherTypeModule_ParameterAttributeMetadata(\"Precipitation\", \"float\", \"mm/h\"));\n case 11:\n return singleton(new WeatherTypeModule_ParameterAttributeMetadata(\"Code\", \"int\", \"code\"));\n case 12:\n return singleton(new WeatherTypeModule_ParameterAttributeMetadata(\"Category\", \"int\", \"code\"));\n default:\n return ofArray([new WeatherTypeModule_ParameterAttributeMetadata(\"Direction\", \"float\", \"degree 0-359.9 (nautical standard)\"), new WeatherTypeModule_ParameterAttributeMetadata(\"Speed\", \"float\", \"m/s\")]);\n }\n}\n\nexport function WeatherTypeModule_ParameterModule_fromWeatherType(_arg) {\n switch (_arg.tag) {\n case 1:\n return new WeatherTypeModule_Parameter(1, []);\n case 2:\n return new WeatherTypeModule_Parameter(2, []);\n case 3:\n return new WeatherTypeModule_Parameter(3, []);\n case 4:\n return new WeatherTypeModule_Parameter(4, []);\n case 5:\n return new WeatherTypeModule_Parameter(5, []);\n case 6:\n return new WeatherTypeModule_Parameter(6, []);\n case 7:\n return new WeatherTypeModule_Parameter(7, []);\n case 8:\n return new WeatherTypeModule_Parameter(8, []);\n case 9:\n return new WeatherTypeModule_Parameter(9, []);\n case 10:\n return new WeatherTypeModule_Parameter(10, []);\n case 11:\n return new WeatherTypeModule_Parameter(12, []);\n case 12:\n return new WeatherTypeModule_Parameter(11, []);\n default:\n return new WeatherTypeModule_Parameter(0, []);\n }\n}\n\nexport function WeatherTypeModule_ParameterModule_tryParse(s) {\n const matchValue = s.toUpperCase();\n switch (matchValue) {\n case \"WIND10M\":\n return new WeatherTypeModule_Parameter(0, []);\n case \"WIND50M\":\n return new WeatherTypeModule_Parameter(1, []);\n case \"CURRENT\":\n return new WeatherTypeModule_Parameter(2, []);\n case \"WAVE\":\n case \"WAVES\":\n return new WeatherTypeModule_Parameter(3, []);\n case \"TIDE\":\n return new WeatherTypeModule_Parameter(4, []);\n case \"PRIMARYSWELL\":\n return new WeatherTypeModule_Parameter(5, []);\n case \"SECONDARYSWELL\":\n return new WeatherTypeModule_Parameter(6, []);\n case \"WINDWAVE\":\n case \"WINDWAVES\":\n return new WeatherTypeModule_Parameter(7, []);\n case \"CLOUDS\":\n return new WeatherTypeModule_Parameter(8, []);\n case \"AIRTEMPERATURE\":\n return new WeatherTypeModule_Parameter(9, []);\n case \"PRECIPITATION\":\n return new WeatherTypeModule_Parameter(10, []);\n case \"PRECIPITATIONCATEGORY\":\n return new WeatherTypeModule_Parameter(12, []);\n case \"WEATHERSYMBOL\":\n return new WeatherTypeModule_Parameter(11, []);\n default:\n return undefined;\n }\n}\n\nexport function WeatherTypeModule_ParameterModule_name(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"wind50m\";\n case 2:\n return \"current\";\n case 3:\n return \"wave\";\n case 4:\n return \"tide\";\n case 5:\n return \"primaryswell\";\n case 6:\n return \"secondaryswell\";\n case 7:\n return \"windwave\";\n case 8:\n return \"clouds\";\n case 9:\n return \"airtemperature\";\n case 10:\n return \"precipitation\";\n case 12:\n return \"precipitationcategory\";\n case 11:\n return \"weathersymbol\";\n default:\n return \"wind10m\";\n }\n}\n\nexport function WeatherTypeModule_ParameterModule_parse(s) {\n return defaultArgWith(WeatherTypeModule_ParameterModule_tryParse(s), () => toFail(printf(\"Cannot parse WeatherParameter from value %s\"))(s));\n}\n\n","import react from \"react\";\n\nexport const reactApi = react;\n\n","import {\n useEffect as useEffectReact,\n useLayoutEffect as useLayoutEffectReact,\n useDebugValue as useDebugValueReact } from 'react'\n\nexport const useEffect = getDisposable => {\n useEffectReact(() => {\n const disposable = getDisposable()\n return () => {\n disposable.Dispose();\n }\n })\n}\n\nexport const useEffectWithDeps = (getDisposable, deps) => {\n useEffectReact(() => {\n const disposable = getDisposable()\n return () => {\n disposable.Dispose();\n }\n }, deps)\n}\n\nexport const useLayoutEffect = getDisposable => {\n useLayoutEffectReact(() => {\n const disposable = getDisposable()\n return () => {\n disposable.Dispose();\n }\n })\n}\n\nexport const useLayoutEffectWithDeps = (getDisposable, deps) => {\n useLayoutEffectReact(() => {\n const disposable = getDisposable()\n return () => {\n disposable.Dispose();\n }\n }, deps)\n}\n\nexport const useDebugValue = (value, formatter) => useDebugValueReact(value, formatter)","import { iterate } from \"../fable-library-js.4.19.3/Seq.js\";\nimport { some, map, defaultArg, toArray } from \"../fable-library-js.4.19.3/Option.js\";\nimport { reactApi } from \"./Interop.fs.js\";\nimport { defaultOf, curry2, uncurry2 } from \"../fable-library-js.4.19.3/Util.js\";\nimport { useLayoutEffect, useEffectWithDeps } from \"./ReactInterop.js\";\nimport { optDispose } from \"./Helpers.fs.js\";\nimport { cancel, createCancellationToken } from \"../fable-library-js.4.19.3/Async.js\";\n\nexport function propsWithKey(withKey, props) {\n if (withKey == null) {\n return props;\n }\n else {\n const f = withKey;\n props.key = f(props);\n return props;\n }\n}\n\nexport function functionComponent(renderElement, name, withKey) {\n iterate((name_1) => {\n renderElement.displayName = name_1;\n }, toArray(name));\n return (props) => {\n const props_2 = propsWithKey(withKey, props);\n return reactApi.createElement(renderElement, props_2);\n };\n}\n\nexport function memo(renderElement, name, areEqual, withKey) {\n const memoElementType = reactApi.memo(renderElement, uncurry2(defaultArg(map(curry2, areEqual), defaultOf())));\n iterate((name_1) => {\n renderElement.displayName = name_1;\n }, toArray(name));\n return (props) => {\n const props_2 = propsWithKey(withKey, props);\n return reactApi.createElement(memoElementType, props_2);\n };\n}\n\nexport function createDisposable(dispose) {\n return {\n Dispose() {\n dispose();\n },\n };\n}\n\nexport function useDisposable(dispose) {\n const dependencies_1 = [dispose];\n return reactApi.useMemo(() => createDisposable(dispose), dependencies_1);\n}\n\nexport function useEffectOnce(effect) {\n const calledOnce = reactApi.useRef(false);\n reactApi.useEffect(() => {\n if (!calledOnce.current) {\n calledOnce.current = true;\n effect();\n }\n }, []);\n}\n\nexport function useEffectDisposableOnce(effect) {\n const destroyFunc = reactApi.useRef(undefined);\n const calledOnce = reactApi.useRef(false);\n const renderAfterCalled = reactApi.useRef(false);\n if (calledOnce.current) {\n renderAfterCalled.current = true;\n }\n useEffectWithDeps(() => optDispose(calledOnce.current ? undefined : ((calledOnce.current = true, (destroyFunc.current = some(effect()), renderAfterCalled.current ? destroyFunc.current : undefined)))), []);\n}\n\nexport function useEffectDisposableOptOnce(effect) {\n const destroyFunc = reactApi.useRef(undefined);\n const calledOnce = reactApi.useRef(false);\n const renderAfterCalled = reactApi.useRef(false);\n if (calledOnce.current) {\n renderAfterCalled.current = true;\n }\n useEffectWithDeps(() => optDispose(calledOnce.current ? undefined : ((calledOnce.current = true, (destroyFunc.current = effect(), renderAfterCalled.current ? destroyFunc.current : undefined)))), []);\n}\n\nexport function createContext(name, defaultValue) {\n const contextObject = reactApi.createContext(defaultArg(defaultValue, void 0));\n iterate((name_1) => {\n contextObject.displayName = name_1;\n }, toArray(name));\n return contextObject;\n}\n\nexport function useCallbackRef(callback) {\n const lastRenderCallbackRef = reactApi.useRef(callback);\n const callbackRef = reactApi.useCallback((arg) => lastRenderCallbackRef.current(arg), []);\n useLayoutEffect((_arg) => {\n lastRenderCallbackRef.current = callback;\n return createDisposable(() => {\n });\n });\n return callbackRef;\n}\n\nexport function forwardRef(render) {\n const forwardRefType = reactApi.forwardRef((props, ref) => render([props, ref]));\n return (tupledArg) => {\n const propsObj = Object.assign({}, tupledArg[0]);\n propsObj.ref = tupledArg[1];\n return reactApi.createElement(forwardRefType, propsObj);\n };\n}\n\nexport function forwardRefWithName(name, render) {\n const forwardRefType = reactApi.forwardRef((props, ref) => render([props, ref]));\n render.displayName = name;\n return (tupledArg) => {\n const propsObj = Object.assign({}, tupledArg[0]);\n propsObj.ref = tupledArg[1];\n return reactApi.createElement(forwardRefType, propsObj);\n };\n}\n\nexport function useCancellationToken() {\n let cts;\n const initialValue = createCancellationToken();\n cts = (reactApi.useRef(initialValue));\n let token;\n const initialValue_1 = cts.current;\n token = (reactApi.useRef(initialValue_1));\n useEffectDisposableOnce(() => createDisposable(() => {\n cancel(cts.current);\n }));\n return token;\n}\n\n","import { split, trimEnd, isNullOrWhiteSpace, substring, join, endsWith } from \"../fable-library-js.4.19.3/String.js\";\nimport { ofArray, singleton, collect, head, empty, tail, isEmpty, reverse, map } from \"../fable-library-js.4.19.3/List.js\";\nimport { item, equalsWith } from \"../fable-library-js.4.19.3/Array.js\";\nimport { defaultOf } from \"../fable-library-js.4.19.3/Util.js\";\nimport { useEffectOnce, createDisposable, useEffectDisposableOnce, useCallbackRef, memo } from \"../Feliz.2.8.0/Internal.fs.js\";\nimport { defaultArg } from \"../fable-library-js.4.19.3/Option.js\";\nimport { defaultOf as defaultOf_1 } from \"../fable-library-js.4.19.3/Util.js\";\nimport { tryParse } from \"../fable-library-js.4.19.3/Int32.js\";\nimport { FSharpRef } from \"../fable-library-js.4.19.3/Types.js\";\nimport { tryParse as tryParse_1 } from \"../fable-library-js.4.19.3/Long.js\";\nimport { tryParse as tryParse_2 } from \"../fable-library-js.4.19.3/Guid.js\";\nimport { tryParse as tryParse_3 } from \"../fable-library-js.4.19.3/Double.js\";\nimport { tryParse as tryParse_4 } from \"../fable-library-js.4.19.3/Decimal.js\";\nimport Decimal from \"../fable-library-js.4.19.3/Decimal.js\";\nimport { map as map_1, delay, toList } from \"../fable-library-js.4.19.3/Seq.js\";\n\nexport function RouterModule_String_$007CPrefix$007C(prefix, str) {\n if (str.indexOf(prefix) === 0) {\n return str;\n }\n else {\n return undefined;\n }\n}\n\nexport function RouterModule_String_$007CSuffix$007C(suffix, str) {\n if (endsWith(str, suffix)) {\n return str;\n }\n else {\n return undefined;\n }\n}\n\nexport function RouterModule_encodeQueryString(queryStringPairs) {\n const _arg = join(\"&\", map((tupledArg) => join(\"=\", [encodeURIComponent(tupledArg[0]), encodeURIComponent(tupledArg[1])]), queryStringPairs));\n if (_arg === \"\") {\n return \"\";\n }\n else {\n return \"?\" + _arg;\n }\n}\n\nexport function RouterModule_encodeQueryStringInts(queryStringIntPairs) {\n const _arg = join(\"&\", map((tupledArg) => join(\"=\", [encodeURIComponent(tupledArg[0]), tupledArg[1]]), queryStringIntPairs));\n if (_arg === \"\") {\n return \"\";\n }\n else {\n return \"?\" + _arg;\n }\n}\n\nfunction RouterModule_normalizeRoute(routeMode) {\n if (routeMode === 1) {\n return (_arg) => {\n let activePatternResult, path, activePatternResult_1, path_1, activePatternResult_2, path_2;\n return (activePatternResult = RouterModule_String_$007CPrefix$007C(\"/\", _arg), (activePatternResult != null) ? ((path = activePatternResult, \"#\" + path)) : ((activePatternResult_1 = RouterModule_String_$007CPrefix$007C(\"#/\", _arg), (activePatternResult_1 != null) ? ((path_1 = activePatternResult_1, path_1)) : ((activePatternResult_2 = RouterModule_String_$007CPrefix$007C(\"#\", _arg), (activePatternResult_2 != null) ? ((path_2 = activePatternResult_2, \"#/\" + substring(path_2, 1, path_2.length - 1))) : (\"#/\" + _arg))))));\n };\n }\n else {\n return (_arg_1) => {\n let activePatternResult_3, path_4;\n return (activePatternResult_3 = RouterModule_String_$007CPrefix$007C(\"/\", _arg_1), (activePatternResult_3 != null) ? ((path_4 = activePatternResult_3, path_4)) : (\"/\" + _arg_1));\n };\n }\n}\n\nexport function RouterModule_encodeParts(xs, routeMode) {\n return RouterModule_normalizeRoute(routeMode)(join(\"/\", map((part) => {\n if (((part.indexOf(\"?\") >= 0) ? true : (part.indexOf(\"#\") === 0)) ? true : (part.indexOf(\"/\") === 0)) {\n return part;\n }\n else {\n return encodeURIComponent(part);\n }\n }, xs)));\n}\n\n/**\n * Safely returns tuple of list items without last one and last item\n */\nexport function RouterModule_trySeparateLast(xs) {\n const matchValue = reverse(xs);\n if (!isEmpty(matchValue)) {\n if (isEmpty(tail(matchValue))) {\n return [empty(), head(matchValue)];\n }\n else {\n return [reverse(tail(matchValue)), head(matchValue)];\n }\n }\n else {\n return undefined;\n }\n}\n\nexport function RouterModule_nav(xs, mode, routeMode) {\n if (mode === 1) {\n history.pushState(undefined, \"\", RouterModule_encodeParts(xs, routeMode));\n }\n else {\n history.replaceState(undefined, \"\", RouterModule_encodeParts(xs, routeMode));\n }\n const ev = document.createEvent(\"CustomEvent\");\n ev.initEvent(\"CUSTOM_NAVIGATION_EVENT\", true, true);\n window.dispatchEvent(ev);\n}\n\n/**\n * Parses the URL into multiple path segments\n */\nexport function RouterModule_urlSegments(path, mode) {\n return collect((segment) => {\n if (isNullOrWhiteSpace(segment)) {\n return empty();\n }\n else {\n const segment_1 = trimEnd(segment, \"#\");\n if (segment_1 === \"?\") {\n return empty();\n }\n else if (RouterModule_String_$007CPrefix$007C(\"?\", segment_1) != null) {\n return singleton(segment_1);\n }\n else {\n const matchValue = segment_1.split(\"?\");\n if (!equalsWith((x, y) => (x === y), matchValue, defaultOf()) && (matchValue.length === 1)) {\n const value = item(0, matchValue);\n return singleton(decodeURIComponent(value));\n }\n else if (!equalsWith((x_1, y_1) => (x_1 === y_1), matchValue, defaultOf()) && (matchValue.length === 2)) {\n if (item(1, matchValue) === \"\") {\n const value_1 = item(0, matchValue);\n return singleton(decodeURIComponent(value_1));\n }\n else {\n const value_2 = item(0, matchValue);\n const query = item(1, matchValue);\n return ofArray([decodeURIComponent(value_2), \"?\" + query]);\n }\n }\n else {\n return empty();\n }\n }\n }\n }, ofArray(split((RouterModule_String_$007CPrefix$007C(\"#\", path) != null) ? substring(path, 1, path.length - 1) : ((mode === 1) ? ((RouterModule_String_$007CSuffix$007C(\"#\", path) != null) ? \"\" : ((RouterModule_String_$007CSuffix$007C(\"#/\", path) != null) ? \"\" : path)) : path), [\"/\"], undefined, 0)));\n}\n\nexport function RouterModule_onUrlChange(routeMode, urlChanged, ev) {\n return urlChanged(RouterModule_urlSegments((routeMode === 2) ? (window.location.pathname + window.location.search) : window.location.hash, routeMode));\n}\n\nexport const RouterModule_router = memo((input) => {\n const onChange = useCallbackRef((ev) => {\n const urlChanged = defaultArg(input.onUrlChanged, (value) => {\n });\n RouterModule_onUrlChange(defaultArg(input.hashMode, 1), urlChanged, ev);\n });\n useEffectDisposableOnce(() => {\n if (((window.navigator.userAgent).indexOf(\"Trident\") >= 0) ? true : ((window.navigator.userAgent).indexOf(\"MSIE\") >= 0)) {\n window.addEventListener(\"hashchange\", onChange);\n }\n else {\n window.addEventListener(\"popstate\", onChange);\n }\n window.addEventListener(\"CUSTOM_NAVIGATION_EVENT\", onChange);\n return createDisposable(() => {\n if (((window.navigator.userAgent).indexOf(\"Trident\") >= 0) ? true : ((window.navigator.userAgent).indexOf(\"MSIE\") >= 0)) {\n window.removeEventListener(\"hashchange\", onChange);\n }\n else {\n window.removeEventListener(\"popstate\", onChange);\n }\n window.removeEventListener(\"CUSTOM_NAVIGATION_EVENT\", onChange);\n });\n });\n useEffectOnce(() => {\n const ev_1 = document.createEvent(\"CustomEvent\");\n ev_1.initEvent(\"CUSTOM_NAVIGATION_EVENT\", true, true);\n window.dispatchEvent(ev_1);\n });\n const matchValue = input.application;\n if (matchValue == null) {\n return defaultOf_1();\n }\n else {\n return matchValue;\n }\n}, undefined, undefined, undefined);\n\nexport function Route_$007CInt$007C_$007C(input) {\n let matchValue;\n let outArg = 0;\n matchValue = [tryParse(input, 511, false, 32, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n return undefined;\n }\n}\n\nexport function Route_$007CInt64$007C_$007C(input) {\n let matchValue;\n let outArg = 0n;\n matchValue = [tryParse_1(input, 511, false, 64, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n return undefined;\n }\n}\n\nexport function Route_$007CGuid$007C_$007C(input) {\n let matchValue;\n let outArg = \"00000000-0000-0000-0000-000000000000\";\n matchValue = [tryParse_2(input, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n return undefined;\n }\n}\n\nexport function Route_$007CNumber$007C_$007C(input) {\n let matchValue;\n let outArg = 0;\n matchValue = [tryParse_3(input, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n return undefined;\n }\n}\n\nexport function Route_$007CDecimal$007C_$007C(input) {\n let matchValue;\n let outArg = new Decimal(\"0\");\n matchValue = [tryParse_4(input, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n return undefined;\n }\n}\n\nexport function Route_$007CBool$007C_$007C(input) {\n const matchValue = input.toLocaleLowerCase();\n switch (matchValue) {\n case \"1\":\n case \"true\":\n return true;\n case \"0\":\n case \"false\":\n return false;\n case \"\":\n return true;\n default:\n return undefined;\n }\n}\n\n/**\n * Used to parse the query string parameter of the route.\n * \n * For example to match against\n * \n * `/users?id={value}`\n * \n * You can pattern match:\n * \n * `[ \"users\"; Route.Query [ \"id\", value ] ] -> value`\n * \n * When `{value}` is an integer then you can pattern match:\n * \n * `[ \"users\"; Route.Query [ \"id\", Route.Int userId ] ] -> userId`\n */\nexport function Route_$007CQuery$007C_$007C(input) {\n try {\n const urlParams = new URLSearchParams(input);\n return toList(delay(() => map_1((entry) => [item(0, entry), item(1, entry)], urlParams.entries())));\n }\n catch (matchValue) {\n return undefined;\n }\n}\n\n","import { iterate } from \"../fable-library-js.4.19.3/Seq.js\";\nimport { disposeSafe } from \"../fable-library-js.4.19.3/Util.js\";\nimport { toArray } from \"../fable-library-js.4.19.3/Option.js\";\n\nexport function optDispose(disposeOption) {\n return {\n Dispose() {\n iterate((d) => {\n let copyOfStruct = d;\n disposeSafe(copyOfStruct);\n }, toArray(disposeOption));\n },\n };\n}\n\n","import { Union } from \"./fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { class_type, union_type } from \"./fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { append, singleton, empty, tail, head, isEmpty, ofArray } from \"./fable_modules/fable-library-js.4.19.3/List.js\";\nimport { WeatherTypeModule_ParameterModule_name, WeatherTypeModule_ParameterModule_parse, WeatherTypeModule_Parameter, WeatherTypeModule_Parameter_$reflection } from \"./StenaWeather.Domain/Weather.js\";\nimport { Route_$007CGuid$007C_$007C, Route_$007CQuery$007C_$007C } from \"./fable_modules/Feliz.Router.4.0.0/Router.fs.js\";\nimport { RouterModule_trySeparateLast, RouterModule_encodeQueryString, RouterModule_nav } from \"./fable_modules/Feliz.Router.4.0.0/Router.fs.js\";\nimport { map, defaultArgWith } from \"./fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { Cmd_ofEffect } from \"./fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\n\nexport class PortWindSubpage extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Table\", \"Dashboard\"];\n }\n}\n\nexport function PortWindSubpage_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Router.PortWindSubpage\", [], PortWindSubpage, () => [[], []]);\n}\n\nexport function PortWindSubpage_get_Default() {\n return new PortWindSubpage(0, []);\n}\n\nexport function PortWindSubpageModule_name(_arg) {\n if (_arg.tag === 1) {\n return \"dashboard\";\n }\n else {\n return \"table\";\n }\n}\n\nexport function PortWindSubpageModule_parse(s) {\n switch (s) {\n case \"table\":\n return new PortWindSubpage(0, []);\n case \"dashboard\":\n return new PortWindSubpage(1, []);\n default:\n return PortWindSubpage_get_Default();\n }\n}\n\nexport const PortWindSubpageModule_all = ofArray([new PortWindSubpage(0, []), new PortWindSubpage(1, [])]);\n\nexport class Page extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Models\", \"Vessels\", \"SessionDetails\", \"Dashboard\", \"PortWind\", \"Logout\", \"Login\", \"LoginCallback\", \"LoginCallbackSilent\"];\n }\n}\n\nexport function Page_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Router.Page\", [], Page, () => [[[\"Item\", WeatherTypeModule_Parameter_$reflection()]], [], [[\"Item\", class_type(\"System.Guid\")]], [], [[\"Item\", PortWindSubpage_$reflection()]], [], [], [], []]);\n}\n\nexport const PageModule_defaultPage = new Page(0, [new WeatherTypeModule_Parameter(0, [])]);\n\nexport function PageModule_isLoginPage(_arg) {\n switch (_arg.tag) {\n case 6:\n case 5:\n case 7:\n case 8:\n return true;\n default:\n return false;\n }\n}\n\nexport function PageModule_parseFromUrlSegments(_arg) {\n let matchResult, p;\n if (!isEmpty(_arg)) {\n switch (head(_arg)) {\n case \"logout\": {\n if (isEmpty(tail(_arg))) {\n matchResult = 0;\n }\n else {\n matchResult = 5;\n }\n break;\n }\n case \"login\": {\n if (isEmpty(tail(_arg))) {\n matchResult = 1;\n }\n else {\n matchResult = 5;\n }\n break;\n }\n case \"login-callback\": {\n if (!isEmpty(tail(_arg))) {\n if (isEmpty(tail(tail(_arg)))) {\n matchResult = 2;\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n break;\n }\n case \"login-callback-silent\": {\n if (!isEmpty(tail(_arg))) {\n if (isEmpty(tail(tail(_arg)))) {\n matchResult = 3;\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n break;\n }\n case \"models\": {\n if (!isEmpty(tail(_arg))) {\n const activePatternResult = Route_$007CQuery$007C_$007C(head(tail(_arg)));\n if (activePatternResult != null) {\n if (!isEmpty(activePatternResult)) {\n if (head(activePatternResult)[0] === \"param\") {\n if (isEmpty(tail(activePatternResult))) {\n if (isEmpty(tail(tail(_arg)))) {\n matchResult = 4;\n p = head(activePatternResult)[1];\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n break;\n }\n default:\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n switch (matchResult) {\n case 0:\n return new Page(5, []);\n case 1:\n return new Page(6, []);\n case 2:\n return new Page(7, []);\n case 3:\n return new Page(8, []);\n case 4:\n return new Page(0, [WeatherTypeModule_ParameterModule_parse(p)]);\n default: {\n let matchResult_1, i;\n if (!isEmpty(_arg)) {\n if (head(_arg) === \"sessions\") {\n if (!isEmpty(tail(_arg))) {\n const activePatternResult_1 = Route_$007CGuid$007C_$007C(head(tail(_arg)));\n if (activePatternResult_1 != null) {\n if (isEmpty(tail(tail(_arg)))) {\n matchResult_1 = 0;\n i = activePatternResult_1;\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0:\n return new Page(2, [i]);\n default: {\n let matchResult_2, subpage;\n if (!isEmpty(_arg)) {\n switch (head(_arg)) {\n case \"vessels\": {\n if (isEmpty(tail(_arg))) {\n matchResult_2 = 0;\n }\n else {\n matchResult_2 = 3;\n }\n break;\n }\n case \"dashboard\": {\n if (isEmpty(tail(_arg))) {\n matchResult_2 = 1;\n }\n else {\n matchResult_2 = 3;\n }\n break;\n }\n case \"portwind\": {\n if (!isEmpty(tail(_arg))) {\n const activePatternResult_2 = Route_$007CQuery$007C_$007C(head(tail(_arg)));\n if (activePatternResult_2 != null) {\n if (!isEmpty(activePatternResult_2)) {\n if (head(activePatternResult_2)[0] === \"subpage\") {\n if (isEmpty(tail(activePatternResult_2))) {\n if (isEmpty(tail(tail(_arg)))) {\n matchResult_2 = 2;\n subpage = head(activePatternResult_2)[1];\n }\n else {\n matchResult_2 = 3;\n }\n }\n else {\n matchResult_2 = 3;\n }\n }\n else {\n matchResult_2 = 3;\n }\n }\n else {\n matchResult_2 = 3;\n }\n }\n else {\n matchResult_2 = 3;\n }\n }\n else {\n matchResult_2 = 3;\n }\n break;\n }\n default:\n matchResult_2 = 3;\n }\n }\n else {\n matchResult_2 = 3;\n }\n switch (matchResult_2) {\n case 0:\n return new Page(1, []);\n case 1:\n return new Page(3, []);\n case 2:\n return new Page(4, [PortWindSubpageModule_parse(subpage)]);\n default: {\n let matchResult_3;\n if (!isEmpty(_arg)) {\n if (head(_arg) === \"portwind\") {\n if (isEmpty(tail(_arg))) {\n matchResult_3 = 0;\n }\n else {\n matchResult_3 = 1;\n }\n }\n else {\n matchResult_3 = 1;\n }\n }\n else {\n matchResult_3 = 1;\n }\n switch (matchResult_3) {\n case 0:\n return new Page(4, [PortWindSubpage_get_Default()]);\n default:\n return PageModule_defaultPage;\n }\n }\n }\n }\n }\n }\n }\n}\n\nexport function PageModule_noQueryString(segments) {\n return [segments, empty()];\n}\n\nexport function PageModule_toUrlSegments(_arg) {\n switch (_arg.tag) {\n case 6:\n return PageModule_noQueryString(singleton(\"login\"));\n case 7:\n return PageModule_noQueryString(singleton(\"login-callback\"));\n case 8:\n return PageModule_noQueryString(singleton(\"login-callback-silent\"));\n case 0:\n return [singleton(\"models\"), singleton([\"param\", WeatherTypeModule_ParameterModule_name(_arg.fields[0])])];\n case 2:\n return PageModule_noQueryString(ofArray([\"sessions\", _arg.fields[0]]));\n case 1:\n return PageModule_noQueryString(singleton(\"vessels\"));\n case 3:\n return PageModule_noQueryString(singleton(\"dashboard\"));\n case 4:\n return [singleton(\"portwind\"), singleton([\"subpage\", PortWindSubpageModule_name(_arg.fields[0])])];\n default:\n return PageModule_noQueryString(singleton(\"logout\"));\n }\n}\n\nexport function Router_goToUrl(e) {\n e.preventDefault();\n RouterModule_nav(singleton(e.currentTarget.attributes.href.value), 1, 2);\n}\n\nexport function Router_navigatePage(p) {\n const tupledArg = PageModule_toUrlSegments(p);\n const queryString = tupledArg[1];\n defaultArgWith(map((tupledArg_1) => {\n RouterModule_nav(append(tupledArg_1[0], singleton(tupledArg_1[1] + RouterModule_encodeQueryString(queryString))), 1, 2);\n }, RouterModule_trySeparateLast(tupledArg[0])), () => {\n RouterModule_nav(singleton(RouterModule_encodeQueryString(queryString)), 1, 2);\n });\n}\n\nexport function Cmd_navigatePage(p) {\n const tupledArg = PageModule_toUrlSegments(p);\n return Cmd_ofEffect((_arg_1) => {\n const queryString_1 = tupledArg[1];\n defaultArgWith(map((tupledArg_1) => {\n RouterModule_nav(append(tupledArg_1[0], singleton(tupledArg_1[1] + RouterModule_encodeQueryString(queryString_1))), 1, 2);\n }, RouterModule_trySeparateLast(tupledArg[0])), () => {\n RouterModule_nav(singleton(RouterModule_encodeQueryString(queryString_1)), 1, 2);\n });\n });\n}\n\n","import { Record } from \"../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { lambda_type, class_type, unit_type, record_type, string_type } from \"../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\n\nexport class Response_UserProfile extends Record {\n constructor(Name, Email) {\n super();\n this.Name = Name;\n this.Email = Email;\n }\n}\n\nexport function Response_UserProfile_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.Profiles.API.Response.UserProfile\", [], Response_UserProfile, () => [[\"Name\", string_type], [\"Email\", string_type]]);\n}\n\nexport class ProfilesAPI extends Record {\n constructor(GetProfile) {\n super();\n this.GetProfile = GetProfile;\n }\n}\n\nexport function ProfilesAPI_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.Profiles.API.ProfilesAPI\", [], ProfilesAPI, () => [[\"GetProfile\", lambda_type(unit_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [Response_UserProfile_$reflection()]))]]);\n}\n\nexport function ProfilesAPI_RouteBuilder(_arg, m) {\n return `/api/profiles/${m}`;\n}\n\n","import { FSharpException, Union } from \"../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { class_type, union_type, string_type } from \"../fable_modules/fable-library-js.4.19.3/Reflection.js\";\n\nexport class ServerError extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Exception\", \"ServiceError\", \"Authentication\", \"Authorization\", \"Domain\"];\n }\n}\n\nexport function ServerError_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Shared.Errors.ServerError\", [], ServerError, () => [[[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]]]);\n}\n\nexport class ServerException extends FSharpException {\n constructor(Data0) {\n super();\n this.Data0 = Data0;\n }\n}\n\nexport function ServerException_$reflection() {\n return class_type(\"StenaWeather.WeatherServiceUI.Shared.Errors.ServerException\", undefined, ServerException, class_type(\"System.Exception\"));\n}\n\nexport function ServerErrorModule_failwith(er) {\n throw new ServerException(er);\n}\n\nexport function ServerErrorModule_ofResult(v) {\n if (v.tag === 1) {\n return ServerErrorModule_failwith(v.fields[0]);\n }\n else {\n return v.fields[0];\n }\n}\n\nexport function ServerErrorModule_title(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"Service Error\";\n case 2:\n return \"Authentication Error\";\n case 3:\n return \"Authorization Error\";\n case 4:\n return \"Domain Error\";\n default:\n return \"General Exception\";\n }\n}\n\nexport function ServerErrorModule_text(_arg) {\n let t;\n switch (_arg.tag) {\n case 1: {\n t = _arg.fields[0];\n break;\n }\n case 2: {\n t = _arg.fields[0];\n break;\n }\n case 3: {\n t = _arg.fields[0];\n break;\n }\n case 4: {\n t = _arg.fields[0];\n break;\n }\n default:\n t = _arg.fields[0];\n }\n return t;\n}\n\n","import { Union } from \"./Types.js\";\nimport { union_type } from \"./Reflection.js\";\nimport { equals } from \"./Util.js\";\nimport { empty, singleton } from \"./List.js\";\nimport { some } from \"./Option.js\";\nexport function FSharpResult$2_Ok(ResultValue) {\n return new FSharpResult$2(0, [ResultValue]);\n}\nexport function FSharpResult$2_Error(ErrorValue) {\n return new FSharpResult$2(1, [ErrorValue]);\n}\nexport class FSharpResult$2 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Ok\", \"Error\"];\n }\n}\nexport function FSharpResult$2_$reflection(gen0, gen1) {\n return union_type(\"FSharp.Core.FSharpResult`2\", [gen0, gen1], FSharpResult$2, () => [[[\"ResultValue\", gen0]], [[\"ErrorValue\", gen1]]]);\n}\nexport function Result_Map(mapping, result) {\n if (result.tag === /* Ok */ 0) {\n return FSharpResult$2_Ok(mapping(result.fields[0]));\n }\n else {\n return FSharpResult$2_Error(result.fields[0]);\n }\n}\nexport function Result_MapError(mapping, result) {\n if (result.tag === /* Ok */ 0) {\n return FSharpResult$2_Ok(result.fields[0]);\n }\n else {\n return FSharpResult$2_Error(mapping(result.fields[0]));\n }\n}\nexport function Result_Bind(binder, result) {\n if (result.tag === /* Ok */ 0) {\n return binder(result.fields[0]);\n }\n else {\n return FSharpResult$2_Error(result.fields[0]);\n }\n}\nexport function Result_IsOk(result) {\n if (result.tag === /* Ok */ 0) {\n return true;\n }\n else {\n return false;\n }\n}\nexport function Result_IsError(result) {\n if (result.tag === /* Ok */ 0) {\n return false;\n }\n else {\n return true;\n }\n}\nexport function Result_Contains(value, result) {\n if (result.tag === /* Ok */ 0) {\n return equals(result.fields[0], value);\n }\n else {\n return false;\n }\n}\nexport function Result_Count(result) {\n if (result.tag === /* Ok */ 0) {\n return 1;\n }\n else {\n return 0;\n }\n}\nexport function Result_DefaultValue(defaultValue, result) {\n if (result.tag === /* Ok */ 0) {\n return result.fields[0];\n }\n else {\n return defaultValue;\n }\n}\nexport function Result_DefaultWith(defThunk, result) {\n if (result.tag === /* Ok */ 0) {\n return result.fields[0];\n }\n else {\n return defThunk(result.fields[0]);\n }\n}\nexport function Result_Exists(predicate, result) {\n if (result.tag === /* Ok */ 0) {\n return predicate(result.fields[0]);\n }\n else {\n return false;\n }\n}\nexport function Result_Fold(folder, state, result) {\n if (result.tag === /* Ok */ 0) {\n return folder(state, result.fields[0]);\n }\n else {\n return state;\n }\n}\nexport function Result_FoldBack(folder, result, state) {\n if (result.tag === /* Ok */ 0) {\n return folder(result.fields[0], state);\n }\n else {\n return state;\n }\n}\nexport function Result_ForAll(predicate, result) {\n if (result.tag === /* Ok */ 0) {\n return predicate(result.fields[0]);\n }\n else {\n return true;\n }\n}\nexport function Result_Iterate(action, result) {\n if (result.tag === /* Ok */ 0) {\n action(result.fields[0]);\n }\n}\nexport function Result_ToArray(result) {\n if (result.tag === /* Ok */ 0) {\n return [result.fields[0]];\n }\n else {\n return [];\n }\n}\nexport function Result_ToList(result) {\n if (result.tag === /* Ok */ 0) {\n return singleton(result.fields[0]);\n }\n else {\n return empty();\n }\n}\nexport function Result_ToOption(result) {\n if (result.tag === /* Ok */ 0) {\n return some(result.fields[0]);\n }\n else {\n return undefined;\n }\n}\nexport function Result_ToValueOption(result) {\n if (result.tag === /* Ok */ 0) {\n return some(result.fields[0]);\n }\n else {\n return undefined;\n }\n}\n","import { Exception, Record, Union } from \"../fable-library-js.4.19.3/Types.js\";\nimport { obj_type, class_type, lambda_type, option_type, int32_type, record_type, bool_type, list_type, tuple_type, array_type, uint8_type, string_type, union_type } from \"../fable-library-js.4.19.3/Reflection.js\";\n\nexport class HttpMethod extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"GET\", \"POST\"];\n }\n}\n\nexport function HttpMethod_$reflection() {\n return union_type(\"Fable.Remoting.Client.HttpMethod\", [], HttpMethod, () => [[], []]);\n}\n\nexport class RequestBody extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Empty\", \"Json\", \"Binary\"];\n }\n}\n\nexport function RequestBody_$reflection() {\n return union_type(\"Fable.Remoting.Client.RequestBody\", [], RequestBody, () => [[], [[\"Item\", string_type]], [[\"Item\", array_type(uint8_type)]]]);\n}\n\nexport class HttpRequest extends Record {\n constructor(HttpMethod, Url, Headers, RequestBody, WithCredentials) {\n super();\n this.HttpMethod = HttpMethod;\n this.Url = Url;\n this.Headers = Headers;\n this.RequestBody = RequestBody;\n this.WithCredentials = WithCredentials;\n }\n}\n\nexport function HttpRequest_$reflection() {\n return record_type(\"Fable.Remoting.Client.HttpRequest\", [], HttpRequest, () => [[\"HttpMethod\", HttpMethod_$reflection()], [\"Url\", string_type], [\"Headers\", list_type(tuple_type(string_type, string_type))], [\"RequestBody\", RequestBody_$reflection()], [\"WithCredentials\", bool_type]]);\n}\n\nexport class HttpResponse extends Record {\n constructor(StatusCode, ResponseBody) {\n super();\n this.StatusCode = (StatusCode | 0);\n this.ResponseBody = ResponseBody;\n }\n}\n\nexport function HttpResponse_$reflection() {\n return record_type(\"Fable.Remoting.Client.HttpResponse\", [], HttpResponse, () => [[\"StatusCode\", int32_type], [\"ResponseBody\", string_type]]);\n}\n\nexport class RemoteBuilderOptions extends Record {\n constructor(CustomHeaders, BaseUrl, Authorization, WithCredentials, RouteBuilder, CustomResponseSerialization) {\n super();\n this.CustomHeaders = CustomHeaders;\n this.BaseUrl = BaseUrl;\n this.Authorization = Authorization;\n this.WithCredentials = WithCredentials;\n this.RouteBuilder = RouteBuilder;\n this.CustomResponseSerialization = CustomResponseSerialization;\n }\n}\n\nexport function RemoteBuilderOptions_$reflection() {\n return record_type(\"Fable.Remoting.Client.RemoteBuilderOptions\", [], RemoteBuilderOptions, () => [[\"CustomHeaders\", list_type(tuple_type(string_type, string_type))], [\"BaseUrl\", option_type(string_type)], [\"Authorization\", option_type(string_type)], [\"WithCredentials\", bool_type], [\"RouteBuilder\", lambda_type(string_type, lambda_type(string_type, string_type))], [\"CustomResponseSerialization\", option_type(lambda_type(array_type(uint8_type), lambda_type(class_type(\"System.Type\"), obj_type)))]]);\n}\n\nexport class ProxyRequestException extends Exception {\n constructor(response, errorMsg, reponseText) {\n super(errorMsg);\n this.response = response;\n this.reponseText = reponseText;\n }\n}\n\nexport function ProxyRequestException_$reflection() {\n return class_type(\"Fable.Remoting.Client.ProxyRequestException\", undefined, ProxyRequestException, class_type(\"System.Exception\"));\n}\n\nexport function ProxyRequestException_$ctor_76BC5104(response, errorMsg, reponseText) {\n return new ProxyRequestException(response, errorMsg, reponseText);\n}\n\nexport function ProxyRequestException__get_Response(this$) {\n return this$.response;\n}\n\nexport function ProxyRequestException__get_StatusCode(this$) {\n return this$.response.StatusCode;\n}\n\nexport function ProxyRequestException__get_ResponseText(this$) {\n return this$.reponseText;\n}\n\n","import { SessionMonitor, CheckSessionIFrame, CordovaIFrameNavigator, CordovaPopupNavigator, CordovaPopupWindow, User, SignoutResponse, SigninResponse, WebStorageStateStore, UserManager, OidcClient, MetadataService, Log, InMemoryWebStorage } from \"oidc-client\";\n\nexport const Oidc_InMemoryWebStorage = InMemoryWebStorage;\n\nexport const Oidc_Log = Log;\n\nexport const Oidc_MetadataService = MetadataService;\n\nexport const Oidc_OidcClient = OidcClient;\n\nexport const Oidc_UserManager = UserManager;\n\nexport const Oidc_WebStorageStateStore = WebStorageStateStore;\n\nexport const Oidc_SigninResponse = SigninResponse;\n\nexport const Oidc_SignoutResponse = SignoutResponse;\n\nexport const Oidc_User = User;\n\nexport const Oidc_CordovaPopupWindow = CordovaPopupWindow;\n\nexport const Oidc_CordovaPopupNavigator = CordovaPopupNavigator;\n\nexport const Oidc_CordovaIFrameNavigator = CordovaIFrameNavigator;\n\nexport const Oidc_CheckSessionIFrame = CheckSessionIFrame;\n\nexport const Oidc_SessionMonitor = SessionMonitor;\n\n","import { HttpResponse, HttpRequest, RequestBody, HttpMethod as HttpMethod_1 } from \"./Types.fs.js\";\nimport { empty } from \"../fable-library-js.4.19.3/List.js\";\nimport { singleton } from \"../fable-library-js.4.19.3/AsyncBuilder.js\";\nimport { isCancellationRequested, fromContinuations, cancellationToken } from \"../fable-library-js.4.19.3/Async.js\";\nimport { disposeSafe, getEnumerator } from \"../fable-library-js.4.19.3/Util.js\";\nimport { some } from \"../fable-library-js.4.19.3/Option.js\";\nimport { InternalUtilities_toUInt8Array } from \"./Extensions.fs.js\";\n\nconst defaultRequestConfig = new HttpRequest(new HttpMethod_1(0, []), \"/\", empty(), new RequestBody(0, []), false);\n\n/**\n * Creates a GET request to the specified url\n */\nexport function get$(url) {\n return new HttpRequest(new HttpMethod_1(0, []), url, defaultRequestConfig.Headers, defaultRequestConfig.RequestBody, defaultRequestConfig.WithCredentials);\n}\n\n/**\n * Creates a POST request to the specified url\n */\nexport function post(url) {\n return new HttpRequest(new HttpMethod_1(1, []), url, defaultRequestConfig.Headers, defaultRequestConfig.RequestBody, defaultRequestConfig.WithCredentials);\n}\n\n/**\n * Creates a request using the given method and url\n */\nexport function request(method, url) {\n return new HttpRequest(method, url, defaultRequestConfig.Headers, defaultRequestConfig.RequestBody, defaultRequestConfig.WithCredentials);\n}\n\n/**\n * Appends a request with headers as key-value pairs\n */\nexport function withHeaders(headers, req) {\n return new HttpRequest(req.HttpMethod, req.Url, headers, req.RequestBody, req.WithCredentials);\n}\n\n/**\n * Sets the withCredentials option on the XHR request, useful for CORS requests\n */\nexport function withCredentials(withCredentials_1, req) {\n return new HttpRequest(req.HttpMethod, req.Url, req.Headers, req.RequestBody, withCredentials_1);\n}\n\n/**\n * Appends a request with string body content\n */\nexport function withBody(body, req) {\n return new HttpRequest(req.HttpMethod, req.Url, req.Headers, body, req.WithCredentials);\n}\n\nfunction sendAndRead(preparation, resultMapper, req) {\n return singleton.Delay(() => singleton.Bind(cancellationToken(), (_arg) => {\n const token = _arg;\n const request_1 = fromContinuations((tupledArg) => {\n const xhr = new XMLHttpRequest();\n if (req.HttpMethod.tag === 1) {\n xhr.open(\"POST\", req.Url);\n }\n else {\n xhr.open(\"GET\", req.Url);\n }\n if (preparation != null) {\n preparation(xhr);\n }\n const cancellationTokenRegistration = token.register(() => {\n xhr.abort();\n tupledArg[2](new Error(token));\n });\n const enumerator = getEnumerator(req.Headers);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n xhr.setRequestHeader(forLoopVar[0], forLoopVar[1]);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n xhr.withCredentials = req.WithCredentials;\n xhr.onreadystatechange = (() => {\n const matchValue_1 = xhr.readyState | 0;\n let matchResult;\n if (matchValue_1 === 4) {\n if (!isCancellationRequested(token)) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n disposeSafe(cancellationTokenRegistration);\n tupledArg[0](resultMapper(xhr));\n break;\n }\n case 1: {\n break;\n }\n }\n });\n const matchValue_2 = req.RequestBody;\n switch (matchValue_2.tag) {\n case 1: {\n xhr.send(some(matchValue_2.fields[0]));\n break;\n }\n case 2: {\n xhr.send(some(InternalUtilities_toUInt8Array(matchValue_2.fields[0])));\n break;\n }\n default:\n xhr.send();\n }\n });\n return singleton.ReturnFrom(request_1);\n }));\n}\n\nexport const send = (req) => sendAndRead(undefined, (xhr) => (new HttpResponse(xhr.status, xhr.responseText)), req);\n\nexport const sendAndReadBinary = (req) => sendAndRead((xhr) => {\n xhr.responseType = \"arraybuffer\";\n}, (xhr_1) => [new Uint8Array(xhr_1.response), xhr_1.status], req);\n\n","import { fromContinuations } from \"../fable-library-js.4.19.3/Async.js\";\nimport { class_type } from \"../fable-library-js.4.19.3/Reflection.js\";\nimport { isNullOrWhiteSpace } from \"../fable-library-js.4.19.3/String.js\";\n\n/**\n * Creates a typed byte array of binary data if it not already typed\n */\nexport function InternalUtilities_toUInt8Array(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else {\n return new Uint8Array(data);\n }\n}\n\n/**\n * Asynchronously reads the File content as byte[]\n */\nexport function Browser_Types_File__File_ReadAsByteArray(instance) {\n return fromContinuations((tupledArg) => {\n const reader = new FileReader();\n reader.onload = ((_arg_2) => {\n if (reader.readyState === 2) {\n tupledArg[0](new Uint8Array(reader.result));\n }\n });\n reader.readAsArrayBuffer(instance);\n });\n}\n\n/**\n * Asynchronously reads the File content as a data url string\n */\nexport function Browser_Types_File__File_ReadAsDataUrl(instance) {\n return fromContinuations((tupledArg) => {\n const reader = new FileReader();\n reader.onload = ((_arg_2) => {\n if (reader.readyState === 2) {\n tupledArg[0](reader.result);\n }\n });\n reader.readAsDataURL(instance);\n });\n}\n\n/**\n * Asynchronously reads the File contents as text\n */\nexport function Browser_Types_File__File_ReadAsText(instance) {\n return fromContinuations((tupledArg) => {\n const reader = new FileReader();\n reader.onload = ((_arg_2) => {\n if (reader.readyState === 2) {\n tupledArg[0](reader.result);\n }\n });\n reader.readAsText(instance);\n });\n}\n\nexport class ByteArrayExtensions {\n constructor() {\n }\n}\n\nexport function ByteArrayExtensions_$reflection() {\n return class_type(\"Fable.Remoting.Client.ByteArrayExtensions\", undefined, ByteArrayExtensions);\n}\n\n/**\n * Saves the binary content as a file using the provided file name.\n */\nexport function ByteArrayExtensions_SaveFileAs_5EF83E14(content, fileName) {\n if (isNullOrWhiteSpace(fileName)) {\n }\n else {\n const binaryData = InternalUtilities_toUInt8Array(content);\n const blob = new Blob([binaryData.buffer], { type: \"application/octet-stream\" });\n const dataUrl = window.URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.style = \"display: none\";\n anchor.href = dataUrl;\n anchor.download = fileName;\n anchor.rel = \"noopener\";\n anchor.click();\n anchor.remove();\n window.setTimeout(() => {\n URL.revokeObjectURL(dataUrl);\n }, 40 * 1000);\n }\n}\n\n/**\n * Saves the binary content as a file using the provided file name.\n */\nexport function ByteArrayExtensions_SaveFileAs_Z4C1C8351(content, fileName, mimeType) {\n if (isNullOrWhiteSpace(fileName)) {\n }\n else {\n const binaryData = InternalUtilities_toUInt8Array(content);\n const blob = new Blob([binaryData.buffer], { type: mimeType });\n const dataUrl = window.URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.style = \"display: none\";\n anchor.href = dataUrl;\n anchor.download = fileName;\n anchor.rel = \"noopener\";\n anchor.click();\n anchor.remove();\n window.setTimeout(() => {\n URL.revokeObjectURL(dataUrl);\n }, 40 * 1000);\n }\n}\n\n/**\n * Converts the binary content into a data url by first converting it to a Blob of type \"application/octet-stream\" and reading it as a data url.\n */\nexport function ByteArrayExtensions_AsDataUrl_Z3F6BC7B1(content) {\n const binaryData = InternalUtilities_toUInt8Array(content);\n const blob = new Blob([binaryData.buffer], { type: \"application/octet-stream\" });\n return window.URL.createObjectURL(blob);\n}\n\n/**\n * Converts the binary content into a data url by first converting it to a Blob of the provided mime-type and reading it as a data url.\n */\nexport function ByteArrayExtensions_AsDataUrl_5EF83E14(content, mimeType) {\n const binaryData = InternalUtilities_toUInt8Array(content);\n const blob = new Blob([binaryData.buffer], { type: mimeType });\n return window.URL.createObjectURL(blob);\n}\n\n","import { empty } from \"../fable-library-js.4.19.3/List.js\";\nimport { defaultOf, uncurry2 } from \"../fable-library-js.4.19.3/Util.js\";\nimport { toFail, printf, toText } from \"../fable-library-js.4.19.3/String.js\";\nimport { RemoteBuilderOptions } from \"./Types.fs.js\";\nimport { Reader_$ctor_Z3F6BC7B1, Reader__Read_24524716 } from \"../Fable.Remoting.MsgPack.1.24.0/Read.fs.js\";\nimport { fullName, makeRecord, getRecordElements, name as name_1, class_type } from \"../fable-library-js.4.19.3/Reflection.js\";\nimport { createTypeInfo } from \"../Fable.SimpleJson.3.24.0/TypeInfo.Converter.fs.js\";\nimport { pick, map } from \"../fable-library-js.4.19.3/Array.js\";\nimport { singleton, collect, delay, toArray } from \"../fable-library-js.4.19.3/Seq.js\";\nimport { Proxy_proxyFetch } from \"./Proxy.fs.js\";\n\n/**\n * Starts with default configuration for building a proxy\n */\nexport function RemotingModule_createApi() {\n let clo;\n return new RemoteBuilderOptions(empty(), undefined, undefined, false, uncurry2((clo = toText(printf(\"/%s/%s\")), (arg) => {\n const clo_1 = clo(arg);\n return clo_1;\n })), undefined);\n}\n\n/**\n * Defines how routes are built using the type name and method name. By default, the generated routes are of the form `/typeName/methodName`.\n */\nexport function RemotingModule_withRouteBuilder(builder, options) {\n return new RemoteBuilderOptions(options.CustomHeaders, options.BaseUrl, options.Authorization, options.WithCredentials, builder, options.CustomResponseSerialization);\n}\n\n/**\n * Sets the base url for the request. Useful if you are making cross-domain requests\n */\nexport function RemotingModule_withBaseUrl(url, options) {\n return new RemoteBuilderOptions(options.CustomHeaders, url, options.Authorization, options.WithCredentials, options.RouteBuilder, options.CustomResponseSerialization);\n}\n\n/**\n * Adds custom headers to each request of the proxy\n */\nexport function RemotingModule_withCustomHeader(headers, options) {\n return new RemoteBuilderOptions(headers, options.BaseUrl, options.Authorization, options.WithCredentials, options.RouteBuilder, options.CustomResponseSerialization);\n}\n\n/**\n * Sets the authorization header of every request from the proxy\n */\nexport function RemotingModule_withAuthorizationHeader(token, options) {\n return new RemoteBuilderOptions(options.CustomHeaders, options.BaseUrl, token, options.WithCredentials, options.RouteBuilder, options.CustomResponseSerialization);\n}\n\n/**\n * Sets the withCredentials option on the XHR request, which is useful for CORS scenarios\n */\nexport function RemotingModule_withCredentials(withCredentials, options) {\n return new RemoteBuilderOptions(options.CustomHeaders, options.BaseUrl, options.Authorization, withCredentials, options.RouteBuilder, options.CustomResponseSerialization);\n}\n\n/**\n * Specifies that the API uses binary serialization for responses\n */\nexport function RemotingModule_withBinarySerialization(options) {\n return new RemoteBuilderOptions(options.CustomHeaders, options.BaseUrl, options.Authorization, options.WithCredentials, options.RouteBuilder, (response, returnType) => Reader__Read_24524716(Reader_$ctor_Z3F6BC7B1(response), returnType));\n}\n\nexport class Remoting {\n constructor() {\n }\n}\n\nexport function Remoting_$reflection() {\n return class_type(\"Fable.Remoting.Client.Remoting\", undefined, Remoting);\n}\n\nexport function Remoting_$ctor() {\n return new Remoting();\n}\n\n/**\n * For internal library use only.\n */\nexport function Remoting_buildProxy_64DC51C(options, resolvedType) {\n const schemaType = createTypeInfo(resolvedType);\n if (schemaType.tag === 39) {\n const patternInput = schemaType.fields[0]();\n const recordType = patternInput[1];\n const fieldTypes = map((prop) => [name_1(prop), prop[1]], getRecordElements(recordType));\n return makeRecord(recordType, toArray(delay(() => collect((field) => {\n let n, matchValue, fieldType, fn;\n return singleton((n = (((matchValue = field.FieldType, (matchValue.tag === 25) ? 0 : ((matchValue.tag === 26) ? 0 : ((matchValue.tag === 37) ? (matchValue.fields[0]().length - 1) : 0)))) | 0), (fieldType = pick((tupledArg) => {\n if (tupledArg[0] === field.FieldName) {\n return tupledArg[1];\n }\n else {\n return undefined;\n }\n }, fieldTypes), (fn = Proxy_proxyFetch(options, name_1(recordType), field, fieldType), (n === 0) ? fn(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf()) : ((n === 1) ? ((a) => fn(a)(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())) : ((n === 2) ? ((delegateArg, delegateArg_1) => fn(delegateArg)(delegateArg_1)(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())) : ((n === 3) ? ((delegateArg_2, delegateArg_3, delegateArg_4) => fn(delegateArg_2)(delegateArg_3)(delegateArg_4)(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())) : ((n === 4) ? ((delegateArg_5, delegateArg_6, delegateArg_7, delegateArg_8) => fn(delegateArg_5)(delegateArg_6)(delegateArg_7)(delegateArg_8)(defaultOf())(defaultOf())(defaultOf())(defaultOf())) : ((n === 5) ? ((delegateArg_9, delegateArg_10, delegateArg_11, delegateArg_12, delegateArg_13) => fn(delegateArg_9)(delegateArg_10)(delegateArg_11)(delegateArg_12)(delegateArg_13)(defaultOf())(defaultOf())(defaultOf())) : ((n === 6) ? ((delegateArg_14, delegateArg_15, delegateArg_16, delegateArg_17, delegateArg_18, delegateArg_19) => fn(delegateArg_14)(delegateArg_15)(delegateArg_16)(delegateArg_17)(delegateArg_18)(delegateArg_19)(defaultOf())(defaultOf())) : ((n === 7) ? ((delegateArg_20, delegateArg_21, delegateArg_22, delegateArg_23, delegateArg_24, delegateArg_25, delegateArg_26) => fn(delegateArg_20)(delegateArg_21)(delegateArg_22)(delegateArg_23)(delegateArg_24)(delegateArg_25)(delegateArg_26)(defaultOf())) : ((n === 8) ? ((delegateArg_27, delegateArg_28, delegateArg_29, delegateArg_30, delegateArg_31, delegateArg_32, delegateArg_33, delegateArg_34) => fn(delegateArg_27)(delegateArg_28)(delegateArg_29)(delegateArg_30)(delegateArg_31)(delegateArg_32)(delegateArg_33)(delegateArg_34)) : toFail(printf(\"Cannot generate proxy function for %s. Only up to 8 arguments are supported. Consider using a record type as input\"))(field.FieldName)))))))))))));\n }, patternInput[0]))));\n }\n else {\n const arg_1 = fullName(resolvedType);\n return toFail(printf(\"Cannot build proxy. Exepected type %s to be a valid protocol definition which is a record of functions\"))(arg_1);\n }\n}\n\n","import { fromContinuations } from \"../fable-library-js.4.19.3/Async.js\";\nimport { toFail, printf, toText, trimEnd } from \"../fable-library-js.4.19.3/String.js\";\nimport { fullName, getGenerics, isGenericType, getFunctionElements, isFunction } from \"../fable-library-js.4.19.3/Reflection.js\";\nimport { tryHead, take, item, equalsWith, last, head } from \"../fable-library-js.4.19.3/Array.js\";\nimport { curry2, defaultOf, equals } from \"../fable-library-js.4.19.3/Util.js\";\nimport { empty, singleton, append, delay, toList } from \"../fable-library-js.4.19.3/Seq.js\";\nimport { defaultArg, map } from \"../fable-library-js.4.19.3/Option.js\";\nimport { singleton as singleton_1 } from \"../fable-library-js.4.19.3/AsyncBuilder.js\";\nimport { send, get$, post, withBody, withHeaders, withCredentials as withCredentials_4, sendAndReadBinary } from \"./Http.fs.js\";\nimport { RequestBody, ProxyRequestException_$ctor_76BC5104, HttpResponse } from \"./Types.fs.js\";\nimport { createTypeInfo } from \"../Fable.SimpleJson.3.24.0/TypeInfo.Converter.fs.js\";\nimport { SimpleJson_parseNative } from \"../Fable.SimpleJson.3.24.0/SimpleJson.fs.js\";\nimport { Convert_serialize, Convert_arrayLike, Convert_fromJsonAs } from \"../Fable.SimpleJson.3.24.0/Json.Converter.fs.js\";\nimport { TypeInfo } from \"../Fable.SimpleJson.3.24.0/TypeInfo.fs.js\";\n\n/**\n * Asynchronously reads the blob data content as string\n */\nexport function Blob_readBlobAsText(blob) {\n return fromContinuations((tupledArg) => {\n const reader = new FileReader();\n reader.onload = ((_arg_2) => {\n if (reader.readyState === 2) {\n tupledArg[0](reader.result);\n }\n });\n reader.readAsText(blob);\n });\n}\n\nexport function Proxy_combineRouteWithBaseUrl(route, baseUrl) {\n if (baseUrl != null) {\n const arg = trimEnd(baseUrl, \"/\");\n return toText(printf(\"%s%s\"))(arg)(route);\n }\n else {\n return route;\n }\n}\n\nexport function Proxy_isByteArray(_arg) {\n if (_arg.tag === 30) {\n if (_arg.fields[0]().tag === 13) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n}\n\nexport function Proxy_isAsyncOfByteArray(_arg) {\n if (_arg.tag === 25) {\n const matchValue = _arg.fields[0]();\n if (matchValue.tag === 30) {\n if (matchValue.fields[0]().tag === 13) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n}\n\nexport function Proxy_getReturnType(typ_mut) {\n Proxy_getReturnType:\n while (true) {\n const typ = typ_mut;\n if (isFunction(typ)) {\n typ_mut = getFunctionElements(typ)[1];\n continue Proxy_getReturnType;\n }\n else if (isGenericType(typ)) {\n return head(getGenerics(typ));\n }\n else {\n return typ;\n }\n break;\n }\n}\n\nexport function Proxy_proxyFetch(options, typeName, func, fieldType) {\n let funcArgs;\n const matchValue = func.FieldType;\n funcArgs = ((matchValue.tag === 25) ? [func.FieldType] : ((matchValue.tag === 26) ? [func.FieldType] : ((matchValue.tag === 37) ? matchValue.fields[0]() : toFail(printf(\"Field %s does not have a valid definiton\"))(func.FieldName))));\n const argumentCount = (funcArgs.length - 1) | 0;\n const returnTypeAsync = last(funcArgs);\n let binaryInput;\n const matchValue_1 = func.FieldType;\n if (matchValue_1.tag === 37) {\n const matchValue_2 = matchValue_1.fields[0]();\n if (!equalsWith(equals, matchValue_2, defaultOf()) && (matchValue_2.length === 2)) {\n const output = item(1, matchValue_2);\n binaryInput = Proxy_isByteArray(item(0, matchValue_2));\n }\n else {\n binaryInput = false;\n }\n }\n else {\n binaryInput = false;\n }\n const url = Proxy_combineRouteWithBaseUrl(options.RouteBuilder(typeName, func.FieldName), options.BaseUrl);\n const funcNeedParameters = (!equalsWith(equals, funcArgs, defaultOf()) && (funcArgs.length === 1)) ? ((item(0, funcArgs).tag === 25) ? false : (!(item(0, funcArgs).tag === 26))) : ((!equalsWith(equals, funcArgs, defaultOf()) && (funcArgs.length === 2)) ? ((item(0, funcArgs).tag === 0) ? (!(item(1, funcArgs).tag === 25)) : true) : true);\n const contentType = binaryInput ? \"application/octet-stream\" : \"application/json; charset=utf-8\";\n const inputArgumentTypes = take(argumentCount, funcArgs);\n const headers = toList(delay(() => append(singleton([\"Content-Type\", contentType]), delay(() => append(singleton([\"x-remoting-proxy\", \"true\"]), delay(() => append(options.CustomHeaders, delay(() => {\n const matchValue_3 = options.Authorization;\n if (matchValue_3 == null) {\n return empty();\n }\n else {\n return singleton([\"Authorization\", matchValue_3]);\n }\n }))))))));\n let executeRequest;\n if ((options.CustomResponseSerialization != null) ? true : Proxy_isAsyncOfByteArray(returnTypeAsync)) {\n let onOk;\n const matchValue_4 = options.CustomResponseSerialization;\n if (matchValue_4 != null) {\n const serializer = map(curry2, matchValue_4);\n const returnType = Proxy_getReturnType(fieldType);\n onOk = ((response) => serializer(response)(returnType));\n }\n else {\n onOk = ((value) => value);\n }\n executeRequest = ((requestBody) => singleton_1.Delay(() => singleton_1.Bind(funcNeedParameters ? sendAndReadBinary(withCredentials_4(options.WithCredentials, withHeaders(headers, withBody(requestBody, post(url))))) : sendAndReadBinary(withCredentials_4(options.WithCredentials, withHeaders(headers, get$(url)))), (_arg) => {\n const statusCode = _arg[1] | 0;\n const response_1 = _arg[0];\n if (statusCode === 200) {\n return singleton_1.Return(onOk(response_1));\n }\n else {\n const n = statusCode | 0;\n const responseAsBlob = new Blob([response_1.buffer], { type: 'text/plain' });\n return singleton_1.Bind(Blob_readBlobAsText(responseAsBlob), (_arg_1) => {\n const response_2 = new HttpResponse(statusCode, _arg_1);\n const errorMsg = (n === 500) ? toText(printf(\"Internal server error (500) while making request to %s\"))(url) : toText(printf(\"Http error (%d) while making request to %s\"))(n)(url);\n return singleton_1.ReturnFrom((() => {\n throw ProxyRequestException_$ctor_76BC5104(response_2, errorMsg, response_2.ResponseBody);\n })());\n });\n }\n })));\n }\n else {\n let returnType_1;\n switch (returnTypeAsync.tag) {\n case 25: {\n returnType_1 = returnTypeAsync.fields[0]();\n break;\n }\n case 26: {\n returnType_1 = returnTypeAsync.fields[0]();\n break;\n }\n case 24: {\n const t = returnTypeAsync.fields[0]();\n returnType_1 = ((fullName(t).indexOf(\"System.Threading.Tasks.Task`1\") === 0) ? createTypeInfo(item(0, getGenerics(t))) : toFail(printf(\"Expected field %s to have a return type of Async<\\'t> or Task<\\'t>\"))(func.FieldName));\n break;\n }\n default:\n returnType_1 = toFail(printf(\"Expected field %s to have a return type of Async<\\'t> or Task<\\'t>\"))(func.FieldName);\n }\n executeRequest = ((requestBody_1) => singleton_1.Delay(() => singleton_1.Bind(funcNeedParameters ? send(withCredentials_4(options.WithCredentials, withHeaders(headers, withBody(requestBody_1, post(url))))) : send(withCredentials_4(options.WithCredentials, withHeaders(headers, get$(url)))), (_arg_2) => {\n const response_3 = _arg_2;\n const matchValue_5 = response_3.StatusCode | 0;\n switch (matchValue_5) {\n case 200: {\n const parsedJson = SimpleJson_parseNative(response_3.ResponseBody);\n return singleton_1.Return(Convert_fromJsonAs(parsedJson, returnType_1));\n }\n case 500:\n return singleton_1.ReturnFrom((() => {\n throw ProxyRequestException_$ctor_76BC5104(response_3, toText(printf(\"Internal server error (500) while making request to %s\"))(url), response_3.ResponseBody);\n })());\n default:\n return singleton_1.ReturnFrom((() => {\n throw ProxyRequestException_$ctor_76BC5104(response_3, toText(printf(\"Http error (%d) from server occured while making request to %s\"))(matchValue_5)(url), response_3.ResponseBody);\n })());\n }\n })));\n }\n return (arg0) => ((arg1) => ((arg2) => ((arg3) => ((arg4) => ((arg5) => ((arg6) => ((arg7) => {\n let matchValue_6;\n const inputArguments = funcNeedParameters ? take(argumentCount, [arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7]) : [];\n return executeRequest(binaryInput ? (new RequestBody(2, [arg0])) : ((matchValue_6 = (inputArgumentTypes.length | 0), (matchValue_6 === 1) ? (!Convert_arrayLike(item(0, inputArgumentTypes)) ? (new RequestBody(1, [defaultArg(map((arg_9) => Convert_serialize(arg_9, new TypeInfo(32, [() => inputArgumentTypes])), tryHead(inputArguments)), \"{}\")])) : (new RequestBody(1, [Convert_serialize([item(0, inputArguments)], new TypeInfo(30, [() => item(0, inputArgumentTypes)]))]))) : (new RequestBody(1, [Convert_serialize(inputArguments, new TypeInfo(32, [() => inputArgumentTypes]))])))));\n })))))));\n}\n\n","import { Union, Record } from \"../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { string_type, union_type, class_type, record_type, float64_type } from \"../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { round } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { maxBy, isEmpty } from \"../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { op_Subtraction } from \"../fable_modules/fable-library-js.4.19.3/DateOffset.js\";\nimport { compare } from \"../fable_modules/fable-library-js.4.19.3/Date.js\";\nimport { compare as compare_1 } from \"../fable_modules/fable-library-js.4.19.3/BigInt.js\";\nimport { ticks } from \"../fable_modules/fable-library-js.4.19.3/TimeSpan.js\";\nimport { printf, toFail } from \"../fable_modules/fable-library-js.4.19.3/String.js\";\nimport { WeatherTypeModule_ParameterModule_fromWeatherType, WeatherType_$reflection } from \"./Weather.js\";\n\nexport class Point extends Record {\n constructor(Longitude, Latitude) {\n super();\n this.Longitude = Longitude;\n this.Latitude = Latitude;\n }\n}\n\nexport function Point_$reflection() {\n return record_type(\"StenaWeather.Domain.Forecast.Point\", [], Point, () => [[\"Longitude\", float64_type], [\"Latitude\", float64_type]]);\n}\n\nexport class TimePoint extends Record {\n constructor(Point, DateTime) {\n super();\n this.Point = Point;\n this.DateTime = DateTime;\n }\n}\n\nexport function TimePoint_$reflection() {\n return record_type(\"StenaWeather.Domain.Forecast.TimePoint\", [], TimePoint, () => [[\"Point\", Point_$reflection()], [\"DateTime\", class_type(\"System.DateTimeOffset\")]]);\n}\n\nexport class SpatialDistance extends Record {\n constructor(LonDist, LatDist) {\n super();\n this.LonDist = LonDist;\n this.LatDist = LatDist;\n }\n}\n\nexport function SpatialDistance_$reflection() {\n return record_type(\"StenaWeather.Domain.Forecast.SpatialDistance\", [], SpatialDistance, () => [[\"LonDist\", float64_type], [\"LatDist\", float64_type]]);\n}\n\nfunction sqr(x) {\n return x * x;\n}\n\nexport const SpatialDistanceModule_zero = new SpatialDistance(0, 0);\n\nexport function SpatialDistanceModule_get(p1, p2) {\n return new SpatialDistance(p1.Longitude - p2.Longitude, p1.Latitude - p2.Latitude);\n}\n\nexport function SpatialDistanceModule_inKilometers(p1, p2) {\n const p = 3.141592653589793 / 180;\n const a = (0.5 - (Math.cos((p2.Latitude - p1.Latitude) * p) / 2)) + (((Math.cos(p1.Latitude * p) * Math.cos(p2.Latitude * p)) * (1 - Math.cos((p2.Longitude - p1.Longitude) * p))) / 2);\n return 12742 * Math.asin(Math.sqrt(a));\n}\n\nexport function SpatialDistanceModule_abs(sd) {\n return new SpatialDistance(Math.abs(sd.LonDist), Math.abs(sd.LatDist));\n}\n\nexport function SpatialDistanceModule_angleDistance(lon, lat) {\n return Math.sqrt(sqr(lat) + sqr(lon));\n}\n\nexport function SpatialDistanceModule_toAngleDist(sd) {\n return SpatialDistanceModule_angleDistance(sd.LonDist, sd.LatDist);\n}\n\nexport function SpatialDistanceModule_mult(x, sd) {\n return new SpatialDistance(sd.LonDist * x, sd.LatDist * x);\n}\n\nexport function PointModule_round(x) {\n return new Point(round(x.Longitude, 6), round(x.Latitude, 6));\n}\n\nexport function PointModule_createLonLat(lon, lat) {\n return new Point(lon, lat);\n}\n\nexport function PointModule_distance(p1, p2) {\n return Math.sqrt(sqr(p2.Latitude - p1.Latitude) + sqr(p2.Longitude - p1.Longitude));\n}\n\nexport function TimePointModule_time(tp) {\n return tp.DateTime;\n}\n\nexport function TimePointModule_point(tp) {\n return tp.Point;\n}\n\nexport function TimePointModule_create(lon, lat, time) {\n return new TimePoint(new Point(lon, lat), time);\n}\n\nexport function TimePointModule_getTTL(compareDate, tps) {\n if (isEmpty(tps)) {\n return 0;\n }\n else {\n const ts = op_Subtraction(TimePointModule_time(maxBy((x) => x.DateTime, tps, {\n Compare: compare,\n })), compareDate);\n if (compare_1(ticks(ts), 0n) < 0) {\n return 0;\n }\n else {\n return ts;\n }\n }\n}\n\nexport class Provider extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"DMI\", \"UkMetO\", \"FMI\", \"MetNo\", \"SMHI\", \"FCOO\", \"MetIr\"];\n }\n}\n\nexport function Provider_$reflection() {\n return union_type(\"StenaWeather.Domain.Forecast.Provider\", [], Provider, () => [[], [], [], [], [], [], []]);\n}\n\nexport function ProviderModule_name(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"ukmeto\";\n case 2:\n return \"fmi\";\n case 3:\n return \"metno\";\n case 4:\n return \"smhi\";\n case 5:\n return \"fcoo\";\n case 6:\n return \"metir\";\n default:\n return \"dmi\";\n }\n}\n\nexport function ProviderModule_create(s) {\n const matchValue = s.toLowerCase();\n switch (matchValue) {\n case \"dmi\":\n return new Provider(0, []);\n case \"ukmeto\":\n return new Provider(1, []);\n case \"fmi\":\n return new Provider(2, []);\n case \"metno\":\n return new Provider(3, []);\n case \"smhi\":\n return new Provider(4, []);\n case \"fcoo\":\n return new Provider(5, []);\n case \"metir\":\n return new Provider(6, []);\n default:\n return toFail(printf(\"Cannot parse provider name from string \\\"%s\\\"\"))(s);\n }\n}\n\nexport class ModelInfo extends Record {\n constructor(Name, Created) {\n super();\n this.Name = Name;\n this.Created = Created;\n }\n}\n\nexport function ModelInfo_$reflection() {\n return record_type(\"StenaWeather.Domain.Forecast.ModelInfo\", [], ModelInfo, () => [[\"Name\", string_type], [\"Created\", class_type(\"System.DateTimeOffset\")]]);\n}\n\nexport class PointForecast extends Record {\n constructor(TimePoint, Weather) {\n super();\n this.TimePoint = TimePoint;\n this.Weather = Weather;\n }\n}\n\nexport function PointForecast_$reflection() {\n return record_type(\"StenaWeather.Domain.Forecast.PointForecast\", [], PointForecast, () => [[\"TimePoint\", TimePoint_$reflection()], [\"Weather\", WeatherType_$reflection()]]);\n}\n\nexport function PointForecastModule_getParam(f) {\n return WeatherTypeModule_ParameterModule_fromWeatherType(f.Weather);\n}\n\nexport class ForecastSource extends Record {\n constructor(Provider, Model) {\n super();\n this.Provider = Provider;\n this.Model = Model;\n }\n}\n\nexport function ForecastSource_$reflection() {\n return record_type(\"StenaWeather.Domain.Forecast.ForecastSource\", [], ForecastSource, () => [[\"Provider\", Provider_$reflection()], [\"Model\", ModelInfo_$reflection()]]);\n}\n\nexport class Forecast extends Record {\n constructor(PointForecast, Source) {\n super();\n this.PointForecast = PointForecast;\n this.Source = Source;\n }\n}\n\nexport function Forecast_$reflection() {\n return record_type(\"StenaWeather.Domain.Forecast.Forecast\", [], Forecast, () => [[\"PointForecast\", PointForecast_$reflection()], [\"Source\", ForecastSource_$reflection()]]);\n}\n\nexport function ForecastModule_getParam(f) {\n return PointForecastModule_getParam(f.PointForecast);\n}\n\n","import { Union, Record } from \"../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { bool_type, option_type, class_type, string_type, int32_type, union_type, list_type, record_type, float64_type } from \"../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { SpatialDistance, Provider, SpatialDistance_$reflection, Provider_$reflection, SpatialDistanceModule_inKilometers, Point, Point_$reflection } from \"./Forecast.js\";\nimport { min, map as map_1, max, toList, sumBy, head, singleton, append, pairwise, filter, length } from \"../fable_modules/fable-library-js.4.19.3/Seq.js\";\nimport { tryFind, ofArray, singleton as singleton_1, map, toArray } from \"../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { map as map_2, item } from \"../fable_modules/fable-library-js.4.19.3/Array.js\";\nimport { rangeDouble } from \"../fable_modules/fable-library-js.4.19.3/Range.js\";\nimport { equals, comparePrimitives } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { WeatherTypeModule_Parameter, WeatherTypeModule_Parameter_$reflection } from \"./Weather.js\";\nimport { compare as compare_1, printf, toFail } from \"../fable_modules/fable-library-js.4.19.3/String.js\";\nimport { op_Addition, op_Subtraction } from \"../fable_modules/fable-library-js.4.19.3/DateOffset.js\";\nimport { fromMinutes, fromDays, fromHours, ticks, totalSeconds, fromSeconds } from \"../fable_modules/fable-library-js.4.19.3/TimeSpan.js\";\nimport { toFloat64 } from \"../fable_modules/fable-library-js.4.19.3/BigInt.js\";\nimport { compare } from \"../fable_modules/fable-library-js.4.19.3/Date.js\";\nimport { polygonPoints } from \"./PmpModelArea.js\";\nimport { defaultArgWith } from \"../fable_modules/fable-library-js.4.19.3/Option.js\";\n\nexport class Rectangle extends Record {\n constructor(North, East, South, West) {\n super();\n this.North = North;\n this.East = East;\n this.South = South;\n this.West = West;\n }\n}\n\nexport function Rectangle_$reflection() {\n return record_type(\"StenaWeather.Domain.Models.Rectangle\", [], Rectangle, () => [[\"North\", float64_type], [\"East\", float64_type], [\"South\", float64_type], [\"West\", float64_type]]);\n}\n\nexport class ModelArea extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Rectangle\", \"Polygon\"];\n }\n}\n\nexport function ModelArea_$reflection() {\n return union_type(\"StenaWeather.Domain.Models.ModelArea\", [], ModelArea, () => [[[\"Item\", Rectangle_$reflection()]], [[\"Item\", list_type(Point_$reflection())]]]);\n}\n\nexport function PolygonUtils_isPointInsidePolygon(polygon, p) {\n return (length(filter((tupledArg) => {\n const pi = tupledArg[0];\n const pj = tupledArg[1];\n if (((pi.Latitude < p.Latitude) && (pj.Latitude >= p.Latitude)) ? true : ((pj.Latitude < p.Latitude) && (pi.Latitude >= p.Latitude))) {\n return (pi.Longitude + (((p.Latitude - pi.Latitude) / (pj.Latitude - pi.Latitude)) * (pj.Longitude - pi.Longitude))) < p.Longitude;\n }\n else {\n return false;\n }\n }, pairwise(append(polygon, singleton(head(polygon)))))) % 2) === 1;\n}\n\nexport function PolygonUtils_getCentroid(points) {\n const x = toArray(map((p) => p.Longitude, points));\n const y = toArray(map((p_1) => p_1.Latitude, points));\n const n = x.length | 0;\n const A = sumBy((i) => ((item(i, x) * item((i + 1) % n, y)) - (item((i + 1) % n, x) * item(i, y))), toList(rangeDouble(0, 1, n - 1)), {\n GetZero: () => 0,\n Add: (x_1, y_1) => (x_1 + y_1),\n }) / 2;\n return new Point(sumBy((i_1) => ((item(i_1, x) + item((i_1 + 1) % n, x)) * ((item(i_1, x) * item((i_1 + 1) % n, y)) - (item((i_1 + 1) % n, x) * item(i_1, y)))), toList(rangeDouble(0, 1, n - 1)), {\n GetZero: () => 0,\n Add: (x_2, y_2) => (x_2 + y_2),\n }) / (6 * A), sumBy((i_2) => ((item(i_2, y) + item((i_2 + 1) % n, y)) * ((item(i_2, x) * item((i_2 + 1) % n, y)) - (item((i_2 + 1) % n, x) * item(i_2, y)))), toList(rangeDouble(0, 1, n - 1)), {\n GetZero: () => 0,\n Add: (x_3, y_3) => (x_3 + y_3),\n }) / (6 * A));\n}\n\nexport function ModelAreaModule_isPointWithin(area, p) {\n if (area.tag === 1) {\n return PolygonUtils_isPointInsidePolygon(area.fields[0], p);\n }\n else {\n const r = area.fields[0];\n if (((p.Latitude >= r.South) && (p.Latitude <= r.North)) && (p.Longitude >= r.West)) {\n return p.Longitude <= r.East;\n }\n else {\n return false;\n }\n }\n}\n\nexport function ModelAreaModule_center(area) {\n if (area.tag === 1) {\n return PolygonUtils_getCentroid(area.fields[0]);\n }\n else {\n const r = area.fields[0];\n return new Point((r.East + r.West) / 2, (r.North + r.South) / 2);\n }\n}\n\nexport function ModelAreaModule_resolutionInKm(sd, ma) {\n const centerPoint = ModelAreaModule_center(ma);\n const toEast = new Point(centerPoint.Longitude + sd.LonDist, centerPoint.Latitude);\n return [SpatialDistanceModule_inKilometers(centerPoint, new Point(centerPoint.Longitude, centerPoint.Latitude + sd.LatDist)), SpatialDistanceModule_inKilometers(centerPoint, toEast)];\n}\n\nexport function ModelAreaModule_enclosingRectangle(ma) {\n if (ma.tag === 1) {\n const points = ma.fields[0];\n const North = max(map_1((_arg) => _arg.Latitude, points), {\n Compare: comparePrimitives,\n });\n const South = min(map_1((_arg_1) => _arg_1.Latitude, points), {\n Compare: comparePrimitives,\n });\n return new Rectangle(North, max(map_1((_arg_2) => _arg_2.Longitude, points), {\n Compare: comparePrimitives,\n }), South, min(map_1((_arg_3) => _arg_3.Longitude, points), {\n Compare: comparePrimitives,\n }));\n }\n else {\n return ma.fields[0];\n }\n}\n\nexport class PointBasedModelCalculation extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"ExactPoints\", \"NearPoints\"];\n }\n}\n\nexport function PointBasedModelCalculation_$reflection() {\n return union_type(\"StenaWeather.Domain.Models.PointBasedModelCalculation\", [], PointBasedModelCalculation, () => [[[\"roundDecimalDigits\", int32_type]], [[\"precisionDistance\", float64_type]]]);\n}\n\nexport class ModelType extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"PointBased\", \"GridBased\"];\n }\n}\n\nexport function ModelType_$reflection() {\n return union_type(\"StenaWeather.Domain.Models.ModelType\", [], ModelType, () => [[[\"Item\", PointBasedModelCalculation_$reflection()]], []]);\n}\n\nexport class Model extends Record {\n constructor(Provider, Name, SpatialResolution, TemporalResolution, Area, TemporalRange, Type, SupportedWeatherTypes, UpdateFrequency, OutdatedAlertCoefficient) {\n super();\n this.Provider = Provider;\n this.Name = Name;\n this.SpatialResolution = SpatialResolution;\n this.TemporalResolution = TemporalResolution;\n this.Area = Area;\n this.TemporalRange = TemporalRange;\n this.Type = Type;\n this.SupportedWeatherTypes = SupportedWeatherTypes;\n this.UpdateFrequency = UpdateFrequency;\n this.OutdatedAlertCoefficient = OutdatedAlertCoefficient;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"StenaWeather.Domain.Models.Model\", [], Model, () => [[\"Provider\", Provider_$reflection()], [\"Name\", string_type], [\"SpatialResolution\", SpatialDistance_$reflection()], [\"TemporalResolution\", class_type(\"System.TimeSpan\")], [\"Area\", ModelArea_$reflection()], [\"TemporalRange\", class_type(\"System.TimeSpan\")], [\"Type\", ModelType_$reflection()], [\"SupportedWeatherTypes\", list_type(WeatherTypeModule_Parameter_$reflection())], [\"UpdateFrequency\", class_type(\"System.TimeSpan\")], [\"OutdatedAlertCoefficient\", float64_type]]);\n}\n\nexport class ModelMetadata extends Record {\n constructor(Contact, DataSourceDescription, SourceDataType, IsRotated) {\n super();\n this.Contact = Contact;\n this.DataSourceDescription = DataSourceDescription;\n this.SourceDataType = SourceDataType;\n this.IsRotated = IsRotated;\n }\n}\n\nexport function ModelMetadata_$reflection() {\n return record_type(\"StenaWeather.Domain.Models.ModelMetadata\", [], ModelMetadata, () => [[\"Contact\", option_type(string_type)], [\"DataSourceDescription\", string_type], [\"SourceDataType\", string_type], [\"IsRotated\", bool_type]]);\n}\n\nexport function ModelMetadataModule_isDmiEdrModel(name) {\n switch (name) {\n case \"dkss_idw_api\":\n case \"dkss_nsbs_api\":\n case \"wam_dw_api\":\n case \"wam_natlant_api\":\n case \"harmonie_dini_sf_api\":\n return true;\n default:\n return false;\n }\n}\n\nexport function ModelMetadataModule_isDmiStacModel(name) {\n switch (name) {\n case \"dkss_idw\":\n case \"dkss_nsbs\":\n case \"wam_dw\":\n case \"wam_natlant\":\n case \"harmonie_dini_sf\":\n return true;\n default:\n return false;\n }\n}\n\nexport function ModelMetadataModule_get(m) {\n const matchValue = m.Provider;\n const matchValue_1 = m.Name;\n let matchResult;\n switch (matchValue.tag) {\n case 1: {\n switch (matchValue_1) {\n case \"ukv_nl-uk\":\n case \"ukv_ie-uk\": {\n matchResult = 3;\n break;\n }\n case \"bd1_irish_sea\": {\n matchResult = 4;\n break;\n }\n default:\n matchResult = 5;\n }\n break;\n }\n case 2: {\n matchResult = 6;\n break;\n }\n case 3: {\n matchResult = 7;\n break;\n }\n case 4: {\n if (matchValue_1 === \"nemo\") {\n matchResult = 8;\n }\n else {\n matchResult = 9;\n }\n break;\n }\n case 5: {\n switch (matchValue_1) {\n case \"ww3-nordbalt\":\n case \"ww3-innerdk\": {\n matchResult = 10;\n break;\n }\n case \"getm-nordsee\":\n case \"getm-denmark\":\n case \"getm-baltic\": {\n matchResult = 11;\n break;\n }\n default:\n matchResult = 12;\n }\n break;\n }\n case 6: {\n matchResult = 13;\n break;\n }\n default:\n if (ModelMetadataModule_isDmiEdrModel(m.Name)) {\n matchResult = 0;\n }\n else if (ModelMetadataModule_isDmiStacModel(m.Name)) {\n matchResult = 1;\n }\n else {\n matchResult = 2;\n }\n }\n switch (matchResult) {\n case 0:\n return new ModelMetadata(\"Phone:+4539157500 or Form:https://www.dmi.dk/kontakt/frie-data/\", \"Danish Meterological Institute (DMI) Open Data\", \"JSON\", true);\n case 1:\n return new ModelMetadata(\"Phone:+4539157500 or Form:https://www.dmi.dk/kontakt/frie-data/\", \"Danish Meterological Institute (DMI) Open Data\", \"GRIB2\", true);\n case 2:\n return new ModelMetadata(\"Phone:+4539157280 or Email:opr@dmi.dk\", \"Danish Meterological Institute (DMI)\", \"JSON\", true);\n case 3:\n return new ModelMetadata(undefined, \"UK Met Office\", \"GRIB2\", true);\n case 4:\n return new ModelMetadata(undefined, \"UK Met Office\", \"JSON\", true);\n case 5:\n return new ModelMetadata(undefined, \"UK Met Office\", \"NetCDF\", false);\n case 6:\n return new ModelMetadata(undefined, \"Baltic MFC, PU Finnish Meteorological Institute\", \"NetCDF\", true);\n case 7:\n return new ModelMetadata(undefined, \"The Norwegian Meteorological Institute\", \"OPeNDAP\", false);\n case 8:\n return new ModelMetadata(\"Web: https://www.smhi.se/kontakta-smhi\", \"Baltic MFC, PU Swedish Meteorological and Hydrological Institute\", \"NetCDF\", false);\n case 9:\n return new ModelMetadata(\"Web: https://www.smhi.se/kontakta-smhi\", \"Baltic MFC, PU Swedish Meteorological and Hydrological Institute\", \"JSON\", false);\n case 10:\n return new ModelMetadata(\"Email: info@fcoo.dk\", \"Danish defense ministry (FCOO)\", \"NetCDF\", false);\n case 11:\n return new ModelMetadata(\"Email: info@fcoo.dk\", \"Danish defense ministry (FCOO)\", \"GRIB2\", false);\n case 12:\n return toFail(printf(\"Unknown model name %s\"))(m.Name);\n default:\n return new ModelMetadata(\"Email: opendata@met.ie\", \"Met Éireann (Ireland\\'s National Meteorological Service)\", \"XML\", false);\n }\n}\n\nexport class ModelKey extends Record {\n constructor(Provider, Name) {\n super();\n this.Provider = Provider;\n this.Name = Name;\n }\n}\n\nexport function ModelKey_$reflection() {\n return record_type(\"StenaWeather.Domain.Models.ModelKey\", [], ModelKey, () => [[\"Provider\", Provider_$reflection()], [\"Name\", string_type]]);\n}\n\nexport function ModelKeyModule_ofForecastSource(m) {\n return new ModelKey(m.Provider, m.Model.Name);\n}\n\nexport class ModelUpdateStatus extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"UpToDate\", \"ToBeUpdated\", \"Outdated\"];\n }\n}\n\nexport function ModelUpdateStatus_$reflection() {\n return union_type(\"StenaWeather.Domain.Models.ModelUpdateStatus\", [], ModelUpdateStatus, () => [[], [], []]);\n}\n\nexport function ModelUpdateStatusModule_getAlertFactor(now, lastUpdated, model) {\n const diff = op_Subtraction(now, lastUpdated);\n const diffAlert = fromSeconds(totalSeconds(model.UpdateFrequency) * model.OutdatedAlertCoefficient);\n if (diff <= model.UpdateFrequency) {\n return 0;\n }\n else {\n return toFloat64(ticks(diff)) / toFloat64(ticks(diffAlert));\n }\n}\n\nexport function ModelUpdateStatusModule_get(now, lastUpdated, model) {\n const x = ModelUpdateStatusModule_getAlertFactor(now, lastUpdated, model);\n if (x === 0) {\n return new ModelUpdateStatus(0, []);\n }\n else if (x <= 1) {\n return new ModelUpdateStatus(1, []);\n }\n else {\n return new ModelUpdateStatus(2, []);\n }\n}\n\nexport function ModelUpdateStatusModule_isUpToDate(ms) {\n return equals(ms, new ModelUpdateStatus(0, []));\n}\n\nexport function ModelUpdateStatusModule_isToBeUpdated(ms) {\n return equals(ms, new ModelUpdateStatus(1, []));\n}\n\nexport function ModelUpdateStatusModule_isOutdated(ms) {\n return equals(ms, new ModelUpdateStatus(2, []));\n}\n\nexport function ModelModule_key(m) {\n return new ModelKey(m.Provider, m.Name);\n}\n\nexport function ModelModule_isTimepointWithin(now, timePoint, model) {\n if (ModelAreaModule_isPointWithin(model.Area, timePoint.Point)) {\n return compare(timePoint.DateTime, op_Addition(now, model.TemporalRange)) <= 0;\n }\n else {\n return false;\n }\n}\n\nexport function ModelModule_resolutionInKm(m) {\n return ModelAreaModule_resolutionInKm(m.SpatialResolution, m.Area);\n}\n\nexport const Models_meps = new Model(new Provider(3, []), \"meps\", new SpatialDistance(0.04661695, 0.02245789), fromHours(1), new ModelArea(0, [new Rectangle(75.228696, 54.241262, 49.765385, -18.122414)]), fromDays(3), new ModelType(1, []), singleton_1(new WeatherTypeModule_Parameter(0, [])), fromHours(3), 1.5);\n\nexport const Models_amm15v2 = new Model(new Provider(1, []), \"amm15v2\", new SpatialDistance(0.02778, 0.02778), fromMinutes(15), new ModelArea(0, [new Rectangle(61.3, 10, 46, -16)]), fromDays(6), new ModelType(1, []), ofArray([new WeatherTypeModule_Parameter(2, []), new WeatherTypeModule_Parameter(4, [])]), fromDays(1), 1.5);\n\nexport const Models_amm15s = new Model(new Provider(1, []), \"amm15s\", new SpatialDistance(0.05, 0.05), fromHours(1), new ModelArea(0, [new Rectangle(61.3, 10, 46, -16)]), fromDays(5), new ModelType(1, []), ofArray([new WeatherTypeModule_Parameter(3, []), new WeatherTypeModule_Parameter(7, []), new WeatherTypeModule_Parameter(5, []), new WeatherTypeModule_Parameter(6, [])]), fromDays(1), 1.5);\n\nexport const Models_wam = new Model(new Provider(2, []), \"wam\", new SpatialDistance(0.0278, 0.0167), fromHours(1), new ModelArea(0, [new Rectangle(65.9079, 30.2077, 53.0084, 9.0139)]), fromDays(5), new ModelType(1, []), singleton_1(new WeatherTypeModule_Parameter(3, [])), fromHours(12), 1.5);\n\nexport const Models_nemo = new Model(new Provider(4, []), \"nemo\", new SpatialDistance(0.0278, 0.0167), fromMinutes(15), new ModelArea(0, [new Rectangle(65.890991, 30.20866, 53.008297, 9.041586)]), fromDays(5), new ModelType(1, []), singleton_1(new WeatherTypeModule_Parameter(2, [])), fromHours(12), 1.5);\n\nexport const Models_pmp3g = new Model(new Provider(4, []), \"PMP3g\", new SpatialDistance(0.033333335, 0.020952381), fromHours(1), new ModelArea(1, [ofArray(map_2((tupledArg) => (new Point(tupledArg[0], tupledArg[1])), polygonPoints))]), fromHours(240), new ModelType(1, []), ofArray([new WeatherTypeModule_Parameter(8, []), new WeatherTypeModule_Parameter(9, []), new WeatherTypeModule_Parameter(10, []), new WeatherTypeModule_Parameter(11, []), new WeatherTypeModule_Parameter(12, [])]), fromHours(3), 1.5);\n\nexport const Models_ukvIeUk = new Model(new Provider(1, []), \"ukv_ie-uk\", new SpatialDistance(0.026963, 0.017985), fromHours(1), new ModelArea(0, [new Rectangle(55.21649, -2.658691, 51.590723, -6.70166)]), fromDays(2), new ModelType(1, []), ofArray([new WeatherTypeModule_Parameter(0, []), new WeatherTypeModule_Parameter(1, [])]), fromHours(3), 1.5);\n\nexport const Models_ukvIeGlobal = new Model(new Provider(1, []), \"ukv_ie-global\", new SpatialDistance(0.1, 0.100153856), fromHours(1), new ModelArea(0, [new Rectangle(54.9843, -2.460938, 51.7031, -6.9609)]), fromDays(2), new ModelType(1, []), ofArray([new WeatherTypeModule_Parameter(8, []), new WeatherTypeModule_Parameter(9, []), new WeatherTypeModule_Parameter(10, [])]), fromHours(6), 1.5);\n\nexport const Models_ukvNlUk = new Model(new Provider(1, []), \"ukv_nl-uk\", new SpatialDistance(0.026963, 0.017985), fromHours(1), new ModelArea(0, [new Rectangle(53.748711, 4.799463, 51.707487, -0.340576)]), fromDays(2), new ModelType(1, []), ofArray([new WeatherTypeModule_Parameter(0, []), new WeatherTypeModule_Parameter(1, [])]), fromHours(3), 1.5);\n\nexport const Models_getmNordsee = new Model(new Provider(5, []), \"getm-nordsee\", new SpatialDistance(0.028, 0.017), fromHours(1), new ModelArea(0, [new Rectangle(59.525, 17.0417, 50.9083, -4.0972)]), fromDays(2), new ModelType(1, []), singleton_1(new WeatherTypeModule_Parameter(2, [])), fromHours(6), 1.5);\n\nexport const Models_getmDenmark = new Model(new Provider(5, []), \"getm-denmark\", new SpatialDistance(0.0093, 0.0055), fromHours(1), new ModelArea(0, [new Rectangle(59.525, 17.0417, 53.475, 5.9028)]), fromDays(2), new ModelType(1, []), singleton_1(new WeatherTypeModule_Parameter(2, [])), fromHours(6), 1.5);\n\nexport const Models_getmBaltic = new Model(new Provider(5, []), \"getm-baltic\", new SpatialDistance(0.0093, 0.0055), fromHours(1), new ModelArea(0, [new Rectangle(65.9083, 30.2918, 53.475, 5.9028)]), fromDays(2), new ModelType(1, []), singleton_1(new WeatherTypeModule_Parameter(2, [])), fromHours(6), 1.5);\n\nexport const Models_ww3Nordbalt = new Model(new Provider(5, []), \"ww3-nordbalt\", new SpatialDistance(0.083, 0.05), fromHours(1), new ModelArea(0, [new Rectangle(65.7917, 30.0138, 48.5417, -5.9306)]), fromDays(2), new ModelType(1, []), singleton_1(new WeatherTypeModule_Parameter(3, [])), fromHours(6), 1.5);\n\nexport const Models_ww3InnerDk = new Model(new Provider(5, []), \"ww3-innerdk\", new SpatialDistance(0.028, 0.017), fromHours(1), new ModelArea(0, [new Rectangle(56.4084, 13.3195, 53.875, 9.375)]), fromDays(2), new ModelType(1, []), singleton_1(new WeatherTypeModule_Parameter(3, [])), fromHours(6), 1.5);\n\nexport const Models_harmMetIr = new Model(new Provider(6, []), \"harm-ir\", new SpatialDistance(0.03014, 0.01799), fromHours(1), new ModelArea(1, [ofArray([new Point(-9.3, 56.2), new Point(-3.8, 55), new Point(-6.7, 50.5), new Point(-11.7, 51.6)])]), fromHours(54), new ModelType(0, [new PointBasedModelCalculation(1, [0.001])]), ofArray([new WeatherTypeModule_Parameter(9, []), new WeatherTypeModule_Parameter(8, []), new WeatherTypeModule_Parameter(10, []), new WeatherTypeModule_Parameter(11, [])]), fromHours(10), 1.5);\n\nexport const Models_dmiEdrDkssIdw = new Model(new Provider(0, []), \"dkss_idw_api\", new SpatialDistance(0.013888889, 0.008334021), fromHours(1), new ModelArea(0, [new Rectangle(57.596, 14.826, 53.587, 9.34)]), fromDays(6), new ModelType(0, [new PointBasedModelCalculation(1, [0.1])]), singleton_1(new WeatherTypeModule_Parameter(2, [])), fromHours(6), 1.75);\n\nexport const Models_dmiEdrDkssNsbs = new Model(new Provider(0, []), \"dkss_nsbs_api\", new SpatialDistance(0.083333336, 0.050000004), fromHours(1), new ModelArea(0, [new Rectangle(65.875, 30.292, 48.525, -4.125)]), fromDays(6), new ModelType(0, [new PointBasedModelCalculation(1, [0.25])]), singleton_1(new WeatherTypeModule_Parameter(2, [])), fromHours(6), 1.75);\n\nexport const Models_dmiEdrWamDw = new Model(new Provider(0, []), \"wam_dw_api\", new SpatialDistance(0.016727779, 0.010028566), fromHours(1), new ModelArea(0, [new Rectangle(60, 16, 53, 7)]), fromDays(6), new ModelType(0, [new PointBasedModelCalculation(1, [0.1])]), singleton_1(new WeatherTypeModule_Parameter(3, [])), fromHours(6), 1.75);\n\nexport const Models_dmiEdrWamNatlant = new Model(new Provider(0, []), \"wam_natlant_api\", new SpatialDistance(0.25012627, 0.25026044), fromHours(1), new ModelArea(0, [new Rectangle(78, 30, 30, -69)]), fromDays(10), new ModelType(0, [new PointBasedModelCalculation(1, [0.25])]), singleton_1(new WeatherTypeModule_Parameter(3, [])), fromHours(6), 1.75);\n\nexport const Models_dmiEdrHarmDini = new Model(new Provider(0, []), \"harmonie_dini_sf_api\", new SpatialDistance(0.033333335, 0.020952381), fromHours(1), new ModelArea(0, [new Rectangle(69.907191, 40.069849, 37.688397, -43.169833)]), fromDays(2), new ModelType(0, [new PointBasedModelCalculation(1, [0.25])]), ofArray([new WeatherTypeModule_Parameter(0, []), new WeatherTypeModule_Parameter(10, []), new WeatherTypeModule_Parameter(8, []), new WeatherTypeModule_Parameter(9, [])]), fromHours(3), 2.5);\n\nexport const Models_dmiStacDkssIdw = new Model(new Provider(0, []), \"dkss_idw\", new SpatialDistance(0.013888889, 0.008334021), fromHours(1), new ModelArea(0, [new Rectangle(57.596, 14.826, 53.587, 9.34)]), fromDays(2), new ModelType(1, []), singleton_1(new WeatherTypeModule_Parameter(2, [])), fromHours(6), 1.75);\n\nexport const Models_dmiStacDkssNsbs = new Model(new Provider(0, []), \"dkss_nsbs\", new SpatialDistance(0.083333336, 0.050000004), fromHours(1), new ModelArea(0, [new Rectangle(65.875, 30.292, 48.525, -4.125)]), fromDays(2), new ModelType(1, []), singleton_1(new WeatherTypeModule_Parameter(2, [])), fromHours(6), 1.75);\n\nexport const Models_dmiStacWamDw = new Model(new Provider(0, []), \"wam_dw\", new SpatialDistance(0.016727779, 0.010028566), fromHours(1), new ModelArea(0, [new Rectangle(60, 16, 53, 7)]), fromDays(2), new ModelType(1, []), singleton_1(new WeatherTypeModule_Parameter(3, [])), fromHours(6), 1.75);\n\nexport const Models_dmiStacWamNatlant = new Model(new Provider(0, []), \"wam_natlant\", new SpatialDistance(0.25012627, 0.25026044), fromHours(1), new ModelArea(0, [new Rectangle(78, 30, 30, -69)]), fromDays(2), new ModelType(1, []), singleton_1(new WeatherTypeModule_Parameter(3, [])), fromHours(6), 1.75);\n\nexport const Models_dmiStacHarmDini = new Model(new Provider(0, []), \"harmonie_dini_sf\", new SpatialDistance(0.033333335, 0.020952381), fromHours(1), new ModelArea(0, [new Rectangle(69.907191, 40.069849, 37.688397, -43.169833)]), fromDays(2), new ModelType(1, []), ofArray([new WeatherTypeModule_Parameter(0, []), new WeatherTypeModule_Parameter(10, []), new WeatherTypeModule_Parameter(8, []), new WeatherTypeModule_Parameter(9, [])]), fromHours(3), 2.5);\n\nexport const Models_all = ofArray([Models_amm15s, Models_amm15v2, Models_meps, Models_nemo, Models_pmp3g, Models_wam, Models_ukvIeUk, Models_ukvNlUk, Models_ukvIeGlobal, Models_ww3Nordbalt, Models_ww3InnerDk, Models_getmNordsee, Models_getmDenmark, Models_getmBaltic, Models_harmMetIr, Models_dmiEdrDkssIdw, Models_dmiEdrDkssNsbs, Models_dmiEdrWamDw, Models_dmiEdrWamNatlant, Models_dmiEdrHarmDini, Models_dmiStacDkssIdw, Models_dmiStacDkssNsbs, Models_dmiStacWamDw, Models_dmiStacWamNatlant, Models_dmiStacHarmDini, new Model(new Provider(0, []), \"dkss-innerdk\", new SpatialDistance(0.013888889, 0.008334021), fromHours(1), new ModelArea(0, [new Rectangle(57.6, 14.833, 53.583, 9.333)]), fromDays(6), new ModelType(0, [new PointBasedModelCalculation(1, [0.001])]), singleton_1(new WeatherTypeModule_Parameter(2, [])), fromHours(6), 1.5), new Model(new Provider(0, []), \"dkss-norbalt\", new SpatialDistance(0.083333336, 0.050000004), fromHours(1), new ModelArea(0, [new Rectangle(65.9, 30.333, 48.5, -4.167)]), fromDays(6), new ModelType(0, [new PointBasedModelCalculation(1, [0.001])]), singleton_1(new WeatherTypeModule_Parameter(2, [])), fromHours(6), 1.5), new Model(new Provider(0, []), \"ecm-10km\", new SpatialDistance(0.1, 0.100153856), fromHours(3), new ModelArea(0, [new Rectangle(90.05, 50.05, 24.95, -79.95)]), fromDays(6), new ModelType(0, [new PointBasedModelCalculation(1, [0.001])]), singleton_1(new WeatherTypeModule_Parameter(0, [])), fromHours(12), 1.5), new Model(new Provider(0, []), \"ecm-rejs-gg\", new SpatialDistance(0.140625, 0.14039062), fromHours(3), new ModelArea(0, [new Rectangle(89.85, 180, -89.85, -180)]), fromDays(6), new ModelType(0, [new PointBasedModelCalculation(1, [0.001])]), singleton_1(new WeatherTypeModule_Parameter(0, [])), fromHours(12), 1.5), new Model(new Provider(0, []), \"harm-nea\", new SpatialDistance(0.033333335, 0.020952381), fromHours(1), new ModelArea(0, [new Rectangle(70, 30.005, 48, -9.995)]), fromDays(2), new ModelType(0, [new PointBasedModelCalculation(1, [0.001])]), ofArray([new WeatherTypeModule_Parameter(0, []), new WeatherTypeModule_Parameter(10, []), new WeatherTypeModule_Parameter(8, []), new WeatherTypeModule_Parameter(9, [])]), fromHours(3), 1.5), new Model(new Provider(0, []), \"wam-dk\", new SpatialDistance(0.016727779, 0.010028566), fromHours(1), new ModelArea(0, [new Rectangle(60.01, 15.9, 52.99, 6.983)]), fromDays(6), new ModelType(0, [new PointBasedModelCalculation(1, [0.001])]), singleton_1(new WeatherTypeModule_Parameter(3, [])), fromHours(6), 1.5), new Model(new Provider(0, []), \"wam-natl\", new SpatialDistance(0.25012627, 0.25026044), fromHours(1), new ModelArea(0, [new Rectangle(78.025, 30.025, 29.975, -69.025)]), fromDays(10), new ModelType(0, [new PointBasedModelCalculation(1, [0.001])]), singleton_1(new WeatherTypeModule_Parameter(3, [])), fromHours(6), 1.5)]);\n\nexport function Models_tryGet(mk) {\n return tryFind((x) => {\n if (compare_1(x.Name, mk.Name, 3) === 0) {\n return equals(x.Provider, mk.Provider);\n }\n else {\n return false;\n }\n }, Models_all);\n}\n\nexport function Models_get(mk) {\n return defaultArgWith(Models_tryGet(mk), () => {\n throw new Error(`Cannot find ${mk} in list of registered models`);\n });\n}\n\n","\nexport const polygonPoints = [[2.250475, 52.50044], [2.2905, 52.505211], [2.330534, 52.509967], [2.370577, 52.514708], [2.410629, 52.519435], [2.45069, 52.524146], [2.49076, 52.528843], [2.530839, 52.533525], [2.570927, 52.538193], [2.611024, 52.542845], [2.65113, 52.547483], [2.691244, 52.552106], [2.731368, 52.556714], [2.7715, 52.561307], [2.811641, 52.565885], [2.851791, 52.570449], [2.891949, 52.574998], [2.932117, 52.579532], [2.972293, 52.584051], [3.012477, 52.588555], [3.05267, 52.593044], [3.092872, 52.597519], [3.133082, 52.601979], [3.173301, 52.606423], [3.213529, 52.610853], [3.253765, 52.615268], [3.294009, 52.619668], [3.334262, 52.624054], [3.374523, 52.628424], [3.414793, 52.632779], [3.455071, 52.63712], [3.495357, 52.641446], [3.535652, 52.645756], [3.575955, 52.650052], [3.616266, 52.654333], [3.656586, 52.658599], [3.696913, 52.66285], [3.737249, 52.667086], [3.777593, 52.671307], [3.817946, 52.675513], [3.858306, 52.679704], [3.898674, 52.68388], [3.939051, 52.688042], [3.979435, 52.692188], [4.019828, 52.696319], [4.060228, 52.700435], [4.100637, 52.704537], [4.141053, 52.708623], [4.181478, 52.712694], [4.22191, 52.716751], [4.26235, 52.720792], [4.302798, 52.724818], [4.343253, 52.728829], [4.383717, 52.732826], [4.424188, 52.736807], [4.464667, 52.740773], [4.505153, 52.744724], [4.545647, 52.74866], [4.586149, 52.752581], [4.626659, 52.756487], [4.667176, 52.760378], [4.7077, 52.764254], [4.748232, 52.768115], [4.788772, 52.77196], [4.829319, 52.775791], [4.869874, 52.779607], [4.910436, 52.783407], [4.951005, 52.787192], [4.991582, 52.790963], [5.032166, 52.794718], [5.072757, 52.798458], [5.113356, 52.802183], [5.153962, 52.805893], [5.194575, 52.809588], [5.235195, 52.813267], [5.275823, 52.816932], [5.316457, 52.820581], [5.357099, 52.824215], [5.397748, 52.827834], [5.438404, 52.831438], [5.479067, 52.835027], [5.519737, 52.8386], [5.560414, 52.842159], [5.601098, 52.845702], [5.641789, 52.84923], [5.682486, 52.852743], [5.723191, 52.856241], [5.763902, 52.859724], [5.804621, 52.863191], [5.845346, 52.866643], [5.886078, 52.87008], [5.926816, 52.873502], [5.967561, 52.876909], [6.008313, 52.8803], [6.049072, 52.883676], [6.089837, 52.887037], [6.130609, 52.890383], [6.171387, 52.893714], [6.212172, 52.897029], [6.252964, 52.900329], [6.293762, 52.903614], [6.334566, 52.906883], [6.375377, 52.910138], [6.416194, 52.913377], [6.457017, 52.916601], [6.497847, 52.919809], [6.538683, 52.923003], [6.579526, 52.926181], [6.620375, 52.929344], [6.66123, 52.932491], [6.702091, 52.935623], [6.742958, 52.93874], [6.783831, 52.941842], [6.824711, 52.944928], [6.865597, 52.948], [6.906488, 52.951055], [6.947386, 52.954096], [6.98829, 52.957121], [7.029199, 52.960131], [7.070115, 52.963126], [7.111036, 52.966105], [7.151964, 52.969069], [7.192897, 52.972018], [7.233836, 52.974951], [7.274781, 52.977869], [7.315731, 52.980772], [7.356688, 52.983659], [7.39765, 52.986531], [7.438618, 52.989387], [7.479591, 52.992229], [7.52057, 52.995055], [7.561555, 52.997865], [7.602545, 53.000661], [7.64354, 53.00344], [7.684542, 53.006205], [7.725548, 53.008954], [7.76656, 53.011688], [7.807578, 53.014406], [7.848601, 53.017109], [7.889629, 53.019797], [7.930662, 53.022469], [7.971701, 53.025126], [8.012745, 53.027767], [8.053795, 53.030394], [8.094849, 53.033004], [8.135909, 53.035599], [8.176974, 53.038179], [8.218044, 53.040744], [8.259119, 53.043293], [8.300199, 53.045826], [8.341285, 53.048345], [8.382375, 53.050847], [8.42347, 53.053335], [8.46457, 53.055807], [8.505675, 53.058263], [8.546785, 53.060704], [8.5879, 53.06313], [8.629019, 53.06554], [8.670144, 53.067935], [8.711273, 53.070314], [8.752407, 53.072678], [8.793545, 53.075026], [8.834689, 53.077359], [8.875836, 53.079677], [8.916989, 53.081979], [8.958146, 53.084266], [8.999308, 53.086537], [9.040474, 53.088792], [9.081645, 53.091032], [9.12282, 53.093257], [9.163999, 53.095466], [9.205183, 53.09766], [9.246371, 53.099838], [9.287564, 53.102001], [9.328761, 53.104148], [9.369962, 53.10628], [9.411168, 53.108396], [9.452378, 53.110497], [9.493592, 53.112582], [9.53481, 53.114652], [9.576032, 53.116706], [9.617258, 53.118745], [9.658489, 53.120769], [9.699723, 53.122776], [9.740961, 53.124768], [9.782204, 53.126745], [9.82345, 53.128706], [9.8647, 53.130652], [9.905955, 53.132582], [9.947213, 53.134497], [9.988474, 53.136396], [10.02974, 53.138279], [10.071009, 53.140147], [10.112283, 53.142], [10.153559, 53.143837], [10.19484, 53.145658], [10.236124, 53.147464], [10.277412, 53.149254], [10.318703, 53.151029], [10.359998, 53.152788], [10.401296, 53.154532], [10.442598, 53.15626], [10.483904, 53.157973], [10.525212, 53.15967], [10.566525, 53.161351], [10.60784, 53.163017], [10.649159, 53.164667], [10.690481, 53.166302], [10.731807, 53.167921], [10.773135, 53.169525], [10.814467, 53.171113], [10.855802, 53.172685], [10.897141, 53.174242], [10.938482, 53.175783], [10.979826, 53.177309], [11.021174, 53.178819], [11.062524, 53.180313], [11.103878, 53.181792], [11.145234, 53.183255], [11.186594, 53.184703], [11.227956, 53.186135], [11.269321, 53.187552], [11.310689, 53.188953], [11.35206, 53.190338], [11.393434, 53.191708], [11.43481, 53.193062], [11.476189, 53.194401], [11.517571, 53.195723], [11.558955, 53.197031], [11.600342, 53.198322], [11.641732, 53.199599], [11.683124, 53.200859], [11.724519, 53.202104], [11.765916, 53.203333], [11.807315, 53.204547], [11.848717, 53.205745], [11.890122, 53.206927], [11.931529, 53.208094], [11.972938, 53.209245], [12.014349, 53.21038], [12.055763, 53.2115], [12.097179, 53.212605], [12.138597, 53.213693], [12.180018, 53.214766], [12.22144, 53.215824], [12.262865, 53.216865], [12.304292, 53.217891], [12.345721, 53.218902], [12.387152, 53.219897], [12.428584, 53.220876], [12.470019, 53.221839], [12.511456, 53.222787], [12.552895, 53.223719], [12.594335, 53.224636], [12.635777, 53.225537], [12.677222, 53.226422], [12.718667, 53.227292], [12.760115, 53.228146], [12.801565, 53.228984], [12.843016, 53.229807], [12.884468, 53.230614], [12.925923, 53.231405], [12.967379, 53.232181], [13.008836, 53.232941], [13.050295, 53.233686], [13.091755, 53.234415], [13.133217, 53.235128], [13.174681, 53.235825], [13.216145, 53.236507], [13.257612, 53.237173], [13.299079, 53.237823], [13.340548, 53.238458], [13.382018, 53.239077], [13.423489, 53.239681], [13.464961, 53.240269], [13.506435, 53.240841], [13.54791, 53.241397], [13.589386, 53.241938], [13.630863, 53.242463], [13.672341, 53.242973], [13.71382, 53.243467], [13.7553, 53.243945], [13.796781, 53.244407], [13.838263, 53.244854], [13.879745, 53.245285], [13.921229, 53.245701], [13.962713, 53.2461], [14.004199, 53.246484], [14.045685, 53.246853], [14.087171, 53.247206], [14.128659, 53.247543], [14.170147, 53.247864], [14.211636, 53.24817], [14.253125, 53.24846], [14.294615, 53.248734], [14.336105, 53.248993], [14.377596, 53.249236], [14.419088, 53.249463], [14.46058, 53.249675], [14.502072, 53.249871], [14.543565, 53.250051], [14.585058, 53.250216], [14.626551, 53.250365], [14.668045, 53.250498], [14.709538, 53.250616], [14.751033, 53.250718], [14.792527, 53.250804], [14.834021, 53.250875], [14.875516, 53.250929], [14.91701, 53.250969], [14.958505, 53.250992], [15, 53.251], [15.041495, 53.250992], [15.08299, 53.250969], [15.124484, 53.250929], [15.165979, 53.250875], [15.207473, 53.250804], [15.248967, 53.250718], [15.290462, 53.250616], [15.331955, 53.250498], [15.373449, 53.250365], [15.414942, 53.250216], [15.456435, 53.250051], [15.497928, 53.249871], [15.53942, 53.249675], [15.580912, 53.249463], [15.622404, 53.249236], [15.663895, 53.248993], [15.705385, 53.248734], [15.746875, 53.24846], [15.788364, 53.24817], [15.829853, 53.247864], [15.871341, 53.247543], [15.912829, 53.247206], [15.954315, 53.246853], [15.995801, 53.246484], [16.037287, 53.2461], [16.078771, 53.245701], [16.120255, 53.245285], [16.161737, 53.244854], [16.203219, 53.244407], [16.2447, 53.243945], [16.28618, 53.243467], [16.327659, 53.242973], [16.369137, 53.242463], [16.410614, 53.241938], [16.45209, 53.241397], [16.493565, 53.240841], [16.535039, 53.240269], [16.576511, 53.239681], [16.617982, 53.239077], [16.659452, 53.238458], [16.700921, 53.237823], [16.742388, 53.237173], [16.783855, 53.236507], [16.825319, 53.235825], [16.866783, 53.235128], [16.908245, 53.234415], [16.949705, 53.233686], [16.991164, 53.232941], [17.032621, 53.232181], [17.074077, 53.231405], [17.115532, 53.230614], [17.156984, 53.229807], [17.198435, 53.228984], [17.239885, 53.228146], [17.281333, 53.227292], [17.322778, 53.226422], [17.364223, 53.225537], [17.405665, 53.224636], [17.447105, 53.223719], [17.488544, 53.222787], [17.529981, 53.221839], [17.571416, 53.220876], [17.612848, 53.219897], [17.654279, 53.218902], [17.695708, 53.217891], [17.737135, 53.216865], [17.77856, 53.215824], [17.819982, 53.214766], [17.861403, 53.213693], [17.902821, 53.212605], [17.944237, 53.2115], [17.985651, 53.21038], [18.027062, 53.209245], [18.068471, 53.208094], [18.109878, 53.206927], [18.151283, 53.205745], [18.192685, 53.204547], [18.234084, 53.203333], [18.275481, 53.202104], [18.316876, 53.200859], [18.358268, 53.199599], [18.399658, 53.198322], [18.441045, 53.197031], [18.482429, 53.195723], [18.523811, 53.194401], [18.56519, 53.193062], [18.606566, 53.191708], [18.64794, 53.190338], [18.689311, 53.188953], [18.730679, 53.187552], [18.772044, 53.186135], [18.813406, 53.184703], [18.854766, 53.183255], [18.896122, 53.181792], [18.937476, 53.180313], [18.978826, 53.178819], [19.020174, 53.177309], [19.061518, 53.175783], [19.102859, 53.174242], [19.144198, 53.172685], [19.185533, 53.171113], [19.226865, 53.169525], [19.268193, 53.167921], [19.309519, 53.166302], [19.350841, 53.164667], [19.39216, 53.163017], [19.433475, 53.161351], [19.474788, 53.15967], [19.516096, 53.157973], [19.557402, 53.15626], [19.598704, 53.154532], [19.640002, 53.152788], [19.681297, 53.151029], [19.722588, 53.149254], [19.763876, 53.147464], [19.80516, 53.145658], [19.846441, 53.143837], [19.887717, 53.142], [19.928991, 53.140147], [19.97026, 53.138279], [20.011526, 53.136396], [20.052787, 53.134497], [20.094045, 53.132582], [20.1353, 53.130652], [20.17655, 53.128706], [20.217796, 53.126745], [20.259039, 53.124768], [20.300277, 53.122776], [20.341511, 53.120769], [20.382742, 53.118745], [20.423968, 53.116706], [20.46519, 53.114652], [20.506408, 53.112582], [20.547622, 53.110497], [20.588832, 53.108396], [20.630038, 53.10628], [20.671239, 53.104148], [20.712436, 53.102001], [20.753629, 53.099838], [20.794817, 53.09766], [20.836001, 53.095466], [20.87718, 53.093257], [20.918355, 53.091032], [20.959526, 53.088792], [21.000692, 53.086537], [21.041854, 53.084266], [21.083011, 53.081979], [21.124164, 53.079677], [21.165311, 53.077359], [21.206455, 53.075026], [21.247593, 53.072678], [21.288727, 53.070314], [21.329856, 53.067935], [21.370981, 53.06554], [21.4121, 53.06313], [21.453215, 53.060704], [21.494325, 53.058263], [21.53543, 53.055807], [21.57653, 53.053335], [21.617625, 53.050847], [21.658715, 53.048345], [21.699801, 53.045826], [21.740881, 53.043293], [21.781956, 53.040744], [21.823026, 53.038179], [21.864091, 53.035599], [21.905151, 53.033004], [21.946205, 53.030394], [21.987255, 53.027767], [22.028299, 53.025126], [22.069338, 53.022469], [22.110371, 53.019797], [22.151399, 53.017109], [22.192422, 53.014406], [22.23344, 53.011688], [22.274452, 53.008954], [22.315458, 53.006205], [22.35646, 53.00344], [22.397455, 53.000661], [22.438445, 52.997865], [22.47943, 52.995055], [22.520409, 52.992229], [22.561382, 52.989387], [22.60235, 52.986531], [22.643312, 52.983659], [22.684269, 52.980772], [22.725219, 52.977869], [22.766164, 52.974951], [22.807103, 52.972018], [22.848036, 52.969069], [22.888964, 52.966105], [22.929885, 52.963126], [22.970801, 52.960131], [23.01171, 52.957121], [23.052614, 52.954096], [23.093512, 52.951055], [23.134403, 52.948], [23.175289, 52.944928], [23.216169, 52.941842], [23.257042, 52.93874], [23.297909, 52.935623], [23.33877, 52.932491], [23.379625, 52.929344], [23.420474, 52.926181], [23.461317, 52.923003], [23.502153, 52.919809], [23.542983, 52.916601], [23.583806, 52.913377], [23.624623, 52.910138], [23.665434, 52.906883], [23.706238, 52.903614], [23.747036, 52.900329], [23.787828, 52.897029], [23.828613, 52.893714], [23.869391, 52.890383], [23.910163, 52.887037], [23.950928, 52.883676], [23.991687, 52.8803], [24.032439, 52.876909], [24.073184, 52.873502], [24.113922, 52.87008], [24.154654, 52.866643], [24.195379, 52.863191], [24.236098, 52.859724], [24.276809, 52.856241], [24.317514, 52.852743], [24.358211, 52.84923], [24.398902, 52.845702], [24.439586, 52.842159], [24.480263, 52.8386], [24.520933, 52.835027], [24.561596, 52.831438], [24.602252, 52.827834], [24.642901, 52.824215], [24.683543, 52.820581], [24.724177, 52.816932], [24.764805, 52.813267], [24.805425, 52.809588], [24.846038, 52.805893], [24.886644, 52.802183], [24.927243, 52.798458], [24.967834, 52.794718], [25.008418, 52.790963], [25.048995, 52.787192], [25.089564, 52.783407], [25.130126, 52.779607], [25.170681, 52.775791], [25.211228, 52.77196], [25.251768, 52.768115], [25.2923, 52.764254], [25.332824, 52.760378], [25.373341, 52.756487], [25.413851, 52.752581], [25.454353, 52.74866], [25.494847, 52.744724], [25.535333, 52.740773], [25.575812, 52.736807], [25.616283, 52.732826], [25.656747, 52.728829], [25.697202, 52.724818], [25.73765, 52.720792], [25.77809, 52.716751], [25.818522, 52.712694], [25.858947, 52.708623], [25.899363, 52.704537], [25.939772, 52.700435], [25.980172, 52.696319], [26.020565, 52.692188], [26.060949, 52.688042], [26.101326, 52.68388], [26.141694, 52.679704], [26.182054, 52.675513], [26.222407, 52.671307], [26.262751, 52.667086], [26.303087, 52.66285], [26.343414, 52.658599], [26.383734, 52.654333], [26.424045, 52.650052], [26.464348, 52.645756], [26.504643, 52.641446], [26.544929, 52.63712], [26.585207, 52.632779], [26.625477, 52.628424], [26.665738, 52.624054], [26.705991, 52.619668], [26.746235, 52.615268], [26.786471, 52.610853], [26.826699, 52.606423], [26.866918, 52.601979], [26.907128, 52.597519], [26.94733, 52.593044], [26.987523, 52.588555], [27.027707, 52.584051], [27.067883, 52.579532], [27.108051, 52.574998], [27.148209, 52.570449], [27.188359, 52.565885], [27.2285, 52.561307], [27.268632, 52.556714], [27.308756, 52.552106], [27.34887, 52.547483], [27.356542, 52.572044], [27.364222, 52.596604], [27.371911, 52.621165], [27.379609, 52.645724], [27.387315, 52.670283], [27.39503, 52.694842], [27.402753, 52.7194], [27.410486, 52.743958], [27.418227, 52.768515], [27.425976, 52.793071], [27.433735, 52.817627], [27.441502, 52.842183], [27.449278, 52.866738], [27.457063, 52.891293], [27.464857, 52.915847], [27.472659, 52.9404], [27.480471, 52.964953], [27.488291, 52.989506], [27.49612, 53.014058], [27.503958, 53.038609], [27.511805, 53.06316], [27.519661, 53.087711], [27.527526, 53.112261], [27.5354, 53.13681], [27.543283, 53.161359], [27.551175, 53.185908], [27.559076, 53.210455], [27.566986, 53.235003], [27.574905, 53.25955], [27.582833, 53.284096], [27.59077, 53.308642], [27.598717, 53.333187], [27.606672, 53.357732], [27.614637, 53.382276], [27.622611, 53.40682], [27.630594, 53.431363], [27.638587, 53.455905], [27.646588, 53.480447], [27.654599, 53.504989], [27.662619, 53.52953], [27.670649, 53.55407], [27.678688, 53.57861], [27.686736, 53.60315], [27.694793, 53.627688], [27.70286, 53.652227], [27.710936, 53.676764], [27.719022, 53.701302], [27.727117, 53.725838], [27.735222, 53.750374], [27.743336, 53.77491], [27.751459, 53.799445], [27.759592, 53.823979], [27.767735, 53.848513], [27.775887, 53.873047], [27.784049, 53.89758], [27.79222, 53.922112], [27.800401, 53.946643], [27.808591, 53.971175], [27.816792, 53.995705], [27.825001, 54.020235], [27.833221, 54.044765], [27.84145, 54.069294], [27.849689, 54.093822], [27.857938, 54.11835], [27.866196, 54.142877], [27.874465, 54.167404], [27.882743, 54.19193], [27.891031, 54.216455], [27.899328, 54.24098], [27.907636, 54.265505], [27.915953, 54.290028], [27.924281, 54.314552], [27.932618, 54.339074], [27.940966, 54.363596], [27.949323, 54.388118], [27.95769, 54.412639], [27.966067, 54.437159], [27.974455, 54.461679], [27.982852, 54.486198], [27.991259, 54.510717], [27.999677, 54.535235], [28.008105, 54.559752], [28.016543, 54.584269], [28.02499, 54.608785], [28.033449, 54.633301], [28.041917, 54.657816], [28.050396, 54.68233], [28.058884, 54.706844], [28.067384, 54.731358], [28.075893, 54.75587], [28.084413, 54.780383], [28.092943, 54.804894], [28.101483, 54.829405], [28.110034, 54.853915], [28.118595, 54.878425], [28.127166, 54.902934], [28.135749, 54.927443], [28.144341, 54.951951], [28.152944, 54.976458], [28.161557, 55.000965], [28.170181, 55.025471], [28.178816, 55.049976], [28.187461, 55.074481], [28.196117, 55.098985], [28.204783, 55.123489], [28.21346, 55.147992], [28.222148, 55.172494], [28.230846, 55.196996], [28.239555, 55.221497], [28.248275, 55.245998], [28.257006, 55.270498], [28.265747, 55.294997], [28.274499, 55.319496], [28.283262, 55.343994], [28.292036, 55.368491], [28.30082, 55.392988], [28.309616, 55.417484], [28.318422, 55.441979], [28.32724, 55.466474], [28.336068, 55.490969], [28.344907, 55.515462], [28.353758, 55.539955], [28.362619, 55.564448], [28.371492, 55.588939], [28.380375, 55.61343], [28.38927, 55.637921], [28.398176, 55.662411], [28.407092, 55.6869], [28.416021, 55.711388], [28.42496, 55.735876], [28.43391, 55.760363], [28.442872, 55.78485], [28.451845, 55.809336], [28.460829, 55.833821], [28.469825, 55.858305], [28.478832, 55.882789], [28.48785, 55.907273], [28.49688, 55.931755], [28.505921, 55.956237], [28.514974, 55.980718], [28.524038, 56.005199], [28.533114, 56.029679], [28.542201, 56.054158], [28.551299, 56.078637], [28.56041, 56.103115], [28.569531, 56.127592], [28.578665, 56.152069], [28.58781, 56.176545], [28.596967, 56.20102], [28.606135, 56.225494], [28.615315, 56.249968], [28.624507, 56.274441], [28.633711, 56.298914], [28.642926, 56.323386], [28.652153, 56.347857], [28.661392, 56.372327], [28.670643, 56.396797], [28.679906, 56.421266], [28.689181, 56.445735], [28.698468, 56.470202], [28.707767, 56.494669], [28.717077, 56.519136], [28.7264, 56.543601], [28.735735, 56.568066], [28.745082, 56.592531], [28.754441, 56.616994], [28.763812, 56.641457], [28.773195, 56.665919], [28.782591, 56.69038], [28.791999, 56.714841], [28.801419, 56.739301], [28.810851, 56.76376], [28.820295, 56.788219], [28.829752, 56.812677], [28.839221, 56.837134], [28.848703, 56.86159], [28.858197, 56.886046], [28.867703, 56.910501], [28.877222, 56.934955], [28.886754, 56.959409], [28.896298, 56.983862], [28.905854, 57.008314], [28.915423, 57.032765], [28.925005, 57.057216], [28.934599, 57.081666], [28.944206, 57.106115], [28.953826, 57.130563], [28.963458, 57.155011], [28.973103, 57.179458], [28.982761, 57.203904], [28.992431, 57.228349], [29.002115, 57.252794], [29.011811, 57.277238], [29.02152, 57.301681], [29.031242, 57.326124], [29.040977, 57.350566], [29.050725, 57.375007], [29.060486, 57.399447], [29.07026, 57.423886], [29.080047, 57.448325], [29.089848, 57.472763], [29.099661, 57.4972], [29.109487, 57.521636], [29.119327, 57.546072], [29.12918, 57.570507], [29.139046, 57.594941], [29.148925, 57.619374], [29.158818, 57.643807], [29.168724, 57.668239], [29.178643, 57.69267], [29.188576, 57.7171], [29.198522, 57.74153], [29.208481, 57.765958], [29.218454, 57.790386], [29.228441, 57.814813], [29.238441, 57.83924], [29.248455, 57.863665], [29.258482, 57.88809], [29.268523, 57.912514], [29.278577, 57.936937], [29.288646, 57.96136], [29.298728, 57.985781], [29.308823, 58.010202], [29.318933, 58.034622], [29.329056, 58.059041], [29.339193, 58.08346], [29.349344, 58.107877], [29.359509, 58.132294], [29.369688, 58.15671], [29.379881, 58.181125], [29.390088, 58.205539], [29.400309, 58.229953], [29.410544, 58.254366], [29.420793, 58.278777], [29.431056, 58.303189], [29.441334, 58.327599], [29.451626, 58.352008], [29.461931, 58.376417], [29.472252, 58.400825], [29.482586, 58.425232], [29.492935, 58.449638], [29.503298, 58.474043], [29.513675, 58.498447], [29.524067, 58.522851], [29.534474, 58.547254], [29.544895, 58.571656], [29.55533, 58.596057], [29.56578, 58.620457], [29.576245, 58.644856], [29.586724, 58.669255], [29.597218, 58.693652], [29.607727, 58.718049], [29.61825, 58.742445], [29.628789, 58.76684], [29.639342, 58.791234], [29.64991, 58.815628], [29.660492, 58.84002], [29.67109, 58.864412], [29.681702, 58.888803], [29.69233, 58.913193], [29.702973, 58.937582], [29.71363, 58.96197], [29.724303, 58.986357], [29.734991, 59.010743], [29.745694, 59.035129], [29.756412, 59.059514], [29.767145, 59.083897], [29.777894, 59.10828], [29.788658, 59.132662], [29.799437, 59.157043], [29.810232, 59.181423], [29.821042, 59.205803], [29.831868, 59.230181], [29.842709, 59.254559], [29.853565, 59.278935], [29.864438, 59.303311], [29.875325, 59.327686], [29.886229, 59.35206], [29.897148, 59.376433], [29.908082, 59.400805], [29.919033, 59.425176], [29.929999, 59.449546], [29.940981, 59.473915], [29.951979, 59.498284], [29.962993, 59.522651], [29.974022, 59.547017], [29.985068, 59.571383], [29.99613, 59.595748], [30.007208, 59.620111], [30.018301, 59.644474], [30.029411, 59.668836], [30.040537, 59.693197], [30.05168, 59.717557], [30.062838, 59.741916], [30.074013, 59.766274], [30.085204, 59.790631], [30.096412, 59.814987], [30.107636, 59.839343], [30.118876, 59.863697], [30.130133, 59.88805], [30.141406, 59.912402], [30.152696, 59.936754], [30.164002, 59.961104], [30.175325, 59.985454], [30.186665, 60.009802], [30.198022, 60.03415], [30.209395, 60.058496], [30.220785, 60.082842], [30.232192, 60.107186], [30.243615, 60.13153], [30.255056, 60.155872], [30.266513, 60.180214], [30.277988, 60.204555], [30.28948, 60.228894], [30.300988, 60.253233], [30.312514, 60.277571], [30.324057, 60.301907], [30.335617, 60.326243], [30.347195, 60.350577], [30.358789, 60.374911], [30.370401, 60.399244], [30.382031, 60.423575], [30.393678, 60.447906], [30.405342, 60.472235], [30.417024, 60.496564], [30.428723, 60.520891], [30.44044, 60.545218], [30.452175, 60.569543], [30.463927, 60.593868], [30.475697, 60.618191], [30.487485, 60.642514], [30.49929, 60.666835], [30.511114, 60.691155], [30.522955, 60.715475], [30.534814, 60.739793], [30.546691, 60.76411], [30.558586, 60.788426], [30.5705, 60.812741], [30.582431, 60.837055], [30.594381, 60.861368], [30.606348, 60.88568], [30.618334, 60.909991], [30.630339, 60.9343], [30.642361, 60.958609], [30.654402, 60.982917], [30.666462, 61.007223], [30.67854, 61.031529], [30.690636, 61.055833], [30.702751, 61.080136], [30.714885, 61.104439], [30.727037, 61.12874], [30.739208, 61.15304], [30.751398, 61.177339], [30.763607, 61.201636], [30.775834, 61.225933], [30.78808, 61.250229], [30.800346, 61.274523], [30.81263, 61.298817], [30.824933, 61.323109], [30.837256, 61.3474], [30.849597, 61.37169], [30.861958, 61.395979], [30.874338, 61.420267], [30.886737, 61.444554], [30.899156, 61.468839], [30.911594, 61.493124], [30.924051, 61.517407], [30.936528, 61.541689], [30.949024, 61.56597], [30.96154, 61.59025], [30.974076, 61.614529], [30.986631, 61.638807], [30.999206, 61.663083], [31.011801, 61.687358], [31.024415, 61.711632], [31.03705, 61.735905], [31.049704, 61.760177], [31.062379, 61.784448], [31.075073, 61.808717], [31.087787, 61.832986], [31.100522, 61.857253], [31.113277, 61.881519], [31.126052, 61.905783], [31.138847, 61.930047], [31.151663, 61.954309], [31.164499, 61.978571], [31.177355, 62.002831], [31.190232, 62.027089], [31.20313, 62.051347], [31.216048, 62.075603], [31.228987, 62.099858], [31.241946, 62.124112], [31.254926, 62.148365], [31.267927, 62.172617], [31.280949, 62.196867], [31.293992, 62.221116], [31.307056, 62.245364], [31.320141, 62.269611], [31.333247, 62.293856], [31.346374, 62.3181], [31.359522, 62.342343], [31.372691, 62.366585], [31.385882, 62.390825], [31.399094, 62.415065], [31.412328, 62.439303], [31.425583, 62.463539], [31.43886, 62.487775], [31.452158, 62.512009], [31.465477, 62.536242], [31.478819, 62.560473], [31.492182, 62.584704], [31.505567, 62.608933], [31.518974, 62.633161], [31.532403, 62.657387], [31.545854, 62.681613], [31.559327, 62.705836], [31.572821, 62.730059], [31.586339, 62.75428], [31.599878, 62.778501], [31.613439, 62.802719], [31.627023, 62.826937], [31.64063, 62.851153], [31.654258, 62.875368], [31.66791, 62.899581], [31.681583, 62.923793], [31.69528, 62.948004], [31.708999, 62.972214], [31.722741, 62.996422], [31.736505, 63.020629], [31.750293, 63.044834], [31.764103, 63.069039], [31.777937, 63.093241], [31.791793, 63.117443], [31.805673, 63.141643], [31.819576, 63.165842], [31.833502, 63.190039], [31.847451, 63.214235], [31.861424, 63.23843], [31.87542, 63.262623], [31.889439, 63.286815], [31.903482, 63.311006], [31.917549, 63.335195], [31.931639, 63.359383], [31.945754, 63.383569], [31.959891, 63.407754], [31.974053, 63.431938], [31.988239, 63.45612], [32.002449, 63.480301], [32.016682, 63.50448], [32.03094, 63.528658], [32.045222, 63.552835], [32.059529, 63.57701], [32.073859, 63.601184], [32.088214, 63.625356], [32.102594, 63.649527], [32.116998, 63.673696], [32.131426, 63.697864], [32.145879, 63.72203], [32.160357, 63.746196], [32.17486, 63.770359], [32.189387, 63.794521], [32.20394, 63.818682], [32.218517, 63.842841], [32.23312, 63.866999], [32.247747, 63.891155], [32.2624, 63.91531], [32.277078, 63.939463], [32.291782, 63.963615], [32.30651, 63.987766], [32.321265, 64.011914], [32.336044, 64.036062], [32.35085, 64.060208], [32.365681, 64.084352], [32.380537, 64.108495], [32.39542, 64.132636], [32.410329, 64.156776], [32.425263, 64.180914], [32.440223, 64.205051], [32.45521, 64.229186], [32.470223, 64.25332], [32.485262, 64.277452], [32.500327, 64.301582], [32.515419, 64.325711], [32.530537, 64.349839], [32.545682, 64.373965], [32.560853, 64.398089], [32.576051, 64.422212], [32.591276, 64.446333], [32.606527, 64.470453], [32.621806, 64.494571], [32.637111, 64.518687], [32.652444, 64.542802], [32.667804, 64.566915], [32.683191, 64.591027], [32.698605, 64.615137], [32.714046, 64.639246], [32.729515, 64.663352], [32.745012, 64.687458], [32.760536, 64.711561], [32.776088, 64.735663], [32.791667, 64.759764], [32.807275, 64.783862], [32.82291, 64.807959], [32.838573, 64.832055], [32.854264, 64.856149], [32.869984, 64.880241], [32.885731, 64.904331], [32.901507, 64.92842], [32.917312, 64.952507], [32.933144, 64.976593], [32.949006, 65.000676], [32.964896, 65.024758], [32.980814, 65.048839], [32.996762, 65.072917], [33.012738, 65.096994], [33.028743, 65.12107], [33.044778, 65.145143], [33.060841, 65.169215], [33.076934, 65.193285], [33.093055, 65.217354], [33.109207, 65.24142], [33.125387, 65.265485], [33.141597, 65.289549], [33.157837, 65.31361], [33.174107, 65.33767], [33.190406, 65.361728], [33.206735, 65.385784], [33.223094, 65.409838], [33.239484, 65.433891], [33.255903, 65.457942], [33.272352, 65.481991], [33.288832, 65.506038], [33.305342, 65.530084], [33.321883, 65.554128], [33.338454, 65.57817], [33.355056, 65.60221], [33.371689, 65.626248], [33.388352, 65.650285], [33.405047, 65.674319], [33.421772, 65.698352], [33.438529, 65.722383], [33.455316, 65.746412], [33.472135, 65.77044], [33.488986, 65.794465], [33.505868, 65.818489], [33.522781, 65.842511], [33.539726, 65.86653], [33.556703, 65.890548], [33.573711, 65.914565], [33.590752, 65.938579], [33.607824, 65.962591], [33.624929, 65.986602], [33.642066, 66.01061], [33.659235, 66.034617], [33.676437, 66.058622], [33.693671, 66.082624], [33.710937, 66.106625], [33.728237, 66.130624], [33.745569, 66.154621], [33.762934, 66.178616], [33.780332, 66.20261], [33.797763, 66.226601], [33.815227, 66.25059], [33.832724, 66.274577], [33.850255, 66.298563], [33.867819, 66.322546], [33.885417, 66.346527], [33.903049, 66.370507], [33.920714, 66.394484], [33.938413, 66.418459], [33.956146, 66.442433], [33.973914, 66.466404], [33.991715, 66.490373], [34.009551, 66.51434], [34.027421, 66.538306], [34.045325, 66.562269], [34.063264, 66.58623], [34.081238, 66.610189], [34.099246, 66.634146], [34.11729, 66.658101], [34.135368, 66.682054], [34.153482, 66.706005], [34.17163, 66.729954], [34.189814, 66.7539], [34.208034, 66.777845], [34.226289, 66.801787], [34.244579, 66.825728], [34.262906, 66.849666], [34.281268, 66.873602], [34.299666, 66.897536], [34.3181, 66.921468], [34.336571, 66.945397], [34.355077, 66.969325], [34.37362, 66.99325], [34.3922, 67.017174], [34.410816, 67.041095], [34.429469, 67.065014], [34.448159, 67.08893], [34.466885, 67.112845], [34.485649, 67.136757], [34.50445, 67.160667], [34.523288, 67.184575], [34.542164, 67.208481], [34.561077, 67.232384], [34.580028, 67.256285], [34.599016, 67.280184], [34.618043, 67.304081], [34.637107, 67.327976], [34.65621, 67.351868], [34.675351, 67.375758], [34.69453, 67.399645], [34.713747, 67.423531], [34.733003, 67.447414], [34.752298, 67.471295], [34.771632, 67.495173], [34.791004, 67.519049], [34.810416, 67.542923], [34.829866, 67.566795], [34.849357, 67.590664], [34.868886, 67.614531], [34.888455, 67.638395], [34.908064, 67.662257], [34.927712, 67.686117], [34.947401, 67.709975], [34.967129, 67.73383], [34.986898, 67.757682], [35.006706, 67.781533], [35.026556, 67.805381], [35.046446, 67.829226], [35.066376, 67.853069], [35.086347, 67.87691], [35.106359, 67.900748], [35.126413, 67.924584], [35.146507, 67.948417], [35.166643, 67.972248], [35.18682, 67.996076], [35.207039, 68.019902], [35.227299, 68.043725], [35.247602, 68.067546], [35.267946, 68.091365], [35.288332, 68.115181], [35.308761, 68.138994], [35.329232, 68.162805], [35.349745, 68.186613], [35.370301, 68.210419], [35.3909, 68.234222], [35.411542, 68.258023], [35.432227, 68.281821], [35.452955, 68.305617], [35.473726, 68.32941], [35.494541, 68.3532], [35.515399, 68.376988], [35.536301, 68.400773], [35.557247, 68.424556], [35.578237, 68.448336], [35.599271, 68.472113], [35.62035, 68.495888], [35.641473, 68.51966], [35.66264, 68.543429], [35.683853, 68.567196], [35.70511, 68.59096], [35.726412, 68.614721], [35.747759, 68.63848], [35.769152, 68.662236], [35.79059, 68.685989], [35.812073, 68.709739], [35.833603, 68.733487], [35.855178, 68.757232], [35.876799, 68.780974], [35.898467, 68.804714], [35.920181, 68.828451], [35.941941, 68.852185], [35.963748, 68.875916], [35.985602, 68.899644], [36.007503, 68.92337], [36.029451, 68.947093], [36.051446, 68.970813], [36.073489, 68.99453], [36.095579, 69.018244], [36.117717, 69.041955], [36.139903, 69.065664], [36.162137, 69.08937], [36.184419, 69.113072], [36.206749, 69.136772], [36.229128, 69.160469], [36.251556, 69.184163], [36.274032, 69.207855], [36.296557, 69.231543], [36.319132, 69.255228], [36.341756, 69.278911], [36.364429, 69.30259], [36.387153, 69.326266], [36.409925, 69.34994], [36.432748, 69.37361], [36.455621, 69.397278], [36.478545, 69.420942], [36.501519, 69.444603], [36.524543, 69.468262], [36.547618, 69.491917], [36.570745, 69.515569], [36.593922, 69.539218], [36.617151, 69.562865], [36.640431, 69.586508], [36.663763, 69.610148], [36.687147, 69.633784], [36.710583, 69.657418], [36.734071, 69.681049], [36.757612, 69.704676], [36.781205, 69.7283], [36.804851, 69.751921], [36.828549, 69.775539], [36.852301, 69.799154], [36.876106, 69.822766], [36.899964, 69.846374], [36.923876, 69.869979], [36.947842, 69.893581], [36.971862, 69.917179], [36.995936, 69.940775], [37.020065, 69.964367], [37.044248, 69.987956], [37.068485, 70.011541], [37.092778, 70.035124], [37.117126, 70.058703], [37.141529, 70.082278], [37.165987, 70.10585], [37.190502, 70.129419], [37.215072, 70.152985], [37.239698, 70.176547], [37.26438, 70.200106], [37.289119, 70.223661], [37.313914, 70.247213], [37.338766, 70.270762], [37.363676, 70.294307], [37.388642, 70.317849], [37.413666, 70.341387], [37.438748, 70.364922], [37.463887, 70.388453], [37.489084, 70.411981], [37.51434, 70.435505], [37.539654, 70.459026], [37.565027, 70.482543], [37.590458, 70.506057], [37.615948, 70.529567], [37.641498, 70.553073], [37.667107, 70.576576], [37.692776, 70.600076], [37.718505, 70.623571], [37.744293, 70.647064], [37.770142, 70.670552], [37.796052, 70.694037], [37.822022, 70.717518], [37.848053, 70.740996], [37.778421, 70.74939], [37.708732, 70.75776], [37.638987, 70.766106], [37.569187, 70.774428], [37.49933, 70.782725], [37.429418, 70.790998], [37.359451, 70.799247], [37.289428, 70.807471], [37.219349, 70.81567], [37.149216, 70.823845], [37.079027, 70.831996], [37.008782, 70.840122], [36.938483, 70.848223], [36.868129, 70.856299], [36.79772, 70.864351], [36.727256, 70.872379], [36.656738, 70.880381], [36.586165, 70.888359], [36.515538, 70.896312], [36.444856, 70.90424], [36.374121, 70.912143], [36.303331, 70.920021], [36.232487, 70.927874], [36.161589, 70.935703], [36.090637, 70.943506], [36.019632, 70.951284], [35.948573, 70.959038], [35.87746, 70.966766], [35.806294, 70.974469], [35.735075, 70.982147], [35.663803, 70.9898], [35.592477, 70.997427], [35.521099, 71.005029], [35.449668, 71.012607], [35.378184, 71.020158], [35.306647, 71.027685], [35.235058, 71.035186], [35.163417, 71.042661], [35.091724, 71.050112], [35.019978, 71.057536], [34.94818, 71.064936], [34.87633, 71.072309], [34.804429, 71.079658], [34.732476, 71.08698], [34.660471, 71.094277], [34.588415, 71.101549], [34.516307, 71.108795], [34.444149, 71.116015], [34.371939, 71.123209], [34.299679, 71.130378], [34.227367, 71.137521], [34.155005, 71.144638], [34.082592, 71.151729], [34.010129, 71.158794], [33.937616, 71.165834], [33.865052, 71.172847], [33.792439, 71.179835], [33.719775, 71.186796], [33.647062, 71.193732], [33.574299, 71.200641], [33.501486, 71.207525], [33.428624, 71.214382], [33.355713, 71.221213], [33.282753, 71.228018], [33.209743, 71.234797], [33.136685, 71.24155], [33.063578, 71.248276], [32.990423, 71.254976], [32.917219, 71.26165], [32.843967, 71.268297], [32.770667, 71.274919], [32.697318, 71.281513], [32.623922, 71.288082], [32.550478, 71.294624], [32.476987, 71.301139], [32.403448, 71.307628], [32.329861, 71.31409], [32.256228, 71.320526], [32.182547, 71.326935], [32.10882, 71.333318], [32.035046, 71.339674], [31.961225, 71.346003], [31.887358, 71.352306], [31.813445, 71.358582], [31.739485, 71.364831], [31.66548, 71.371054], [31.591428, 71.377249], [31.517331, 71.383418], [31.443189, 71.38956], [31.369001, 71.395675], [31.294768, 71.401763], [31.22049, 71.407825], [31.146167, 71.413859], [31.071799, 71.419866], [30.997387, 71.425847], [30.92293, 71.4318], [30.848429, 71.437726], [30.773884, 71.443625], [30.699295, 71.449497], [30.624662, 71.455342], [30.549985, 71.46116], [30.475265, 71.46695], [30.400502, 71.472713], [30.325695, 71.478449], [30.250846, 71.484158], [30.175954, 71.489839], [30.101019, 71.495494], [30.026041, 71.50112], [29.951022, 71.50672], [29.87596, 71.512292], [29.800856, 71.517836], [29.725711, 71.523354], [29.650523, 71.528843], [29.575295, 71.534305], [29.500025, 71.53974], [29.424714, 71.545147], [29.349362, 71.550527], [29.273969, 71.555879], [29.198535, 71.561203], [29.123062, 71.5665], [29.047548, 71.571769], [28.971993, 71.57701], [28.896399, 71.582224], [28.820766, 71.58741], [28.745092, 71.592568], [28.66938, 71.597698], [28.593628, 71.602801], [28.517837, 71.607875], [28.442007, 71.612922], [28.366139, 71.617941], [28.290233, 71.622932], [28.214288, 71.627896], [28.138304, 71.632831], [28.062284, 71.637738], [27.986225, 71.642617], [27.910129, 71.647469], [27.833995, 71.652292], [27.757824, 71.657087], [27.681617, 71.661854], [27.605372, 71.666593], [27.529091, 71.671304], [27.452774, 71.675987], [27.37642, 71.680641], [27.30003, 71.685267], [27.223605, 71.689866], [27.147144, 71.694435], [27.070647, 71.698977], [26.994115, 71.703491], [26.917549, 71.707976], [26.840947, 71.712432], [26.76431, 71.716861], [26.68764, 71.721261], [26.610934, 71.725633], [26.534195, 71.729976], [26.457422, 71.734291], [26.380615, 71.738577], [26.303775, 71.742835], [26.226902, 71.747065], [26.149995, 71.751266], [26.073056, 71.755438], [25.996083, 71.759582], [25.919079, 71.763698], [25.842042, 71.767784], [25.764973, 71.771843], [25.687872, 71.775872], [25.61074, 71.779873], [25.533576, 71.783846], [25.45638, 71.787789], [25.379154, 71.791704], [25.301897, 71.79559], [25.224609, 71.799448], [25.147291, 71.803277], [25.069943, 71.807077], [24.992565, 71.810848], [24.915157, 71.81459], [24.837719, 71.818304], [24.760252, 71.821989], [24.682756, 71.825645], [24.60523, 71.829272], [24.527677, 71.83287], [24.450094, 71.836439], [24.372483, 71.839979], [24.294845, 71.843491], [24.217178, 71.846973], [24.139483, 71.850427], [24.061762, 71.853851], [23.984013, 71.857247], [23.906236, 71.860613], [23.828434, 71.86395], [23.750604, 71.867259], [23.672748, 71.870538], [23.594866, 71.873788], [23.516958, 71.877009], [23.439025, 71.880201], [23.361066, 71.883364], [23.283081, 71.886498], [23.205072, 71.889602], [23.127038, 71.892677], [23.048979, 71.895724], [22.970896, 71.89874], [22.892788, 71.901728], [22.814657, 71.904687], [22.736502, 71.907616], [22.658323, 71.910516], [22.580121, 71.913386], [22.501897, 71.916228], [22.423649, 71.91904], [22.345379, 71.921822], [22.267086, 71.924576], [22.188772, 71.9273], [22.110435, 71.929994], [22.032077, 71.93266], [21.953697, 71.935296], [21.875296, 71.937902], [21.796874, 71.940479], [21.718431, 71.943027], [21.639968, 71.945545], [21.561485, 71.948034], [21.482981, 71.950493], [21.404457, 71.952923], [21.325914, 71.955323], [21.247352, 71.957694], [21.16877, 71.960035], [21.09017, 71.962347], [21.011551, 71.964629], [20.932913, 71.966882], [20.854257, 71.969105], [20.775583, 71.971298], [20.696892, 71.973462], [20.618183, 71.975597], [20.539456, 71.977702], [20.460713, 71.979777], [20.381953, 71.981822], [20.303176, 71.983838], [20.224383, 71.985824], [20.145574, 71.987781], [20.066749, 71.989708], [19.987908, 71.991605], [19.909052, 71.993473], [19.830181, 71.995311], [19.751295, 71.997119], [19.672394, 71.998897], [19.593479, 72.000646], [19.51455, 72.002365], [19.435606, 72.004054], [19.356649, 72.005714], [19.277679, 72.007344], [19.198695, 72.008944], [19.119698, 72.010514], [19.040689, 72.012055], [18.961667, 72.013565], [18.882632, 72.015046], [18.803586, 72.016497], [18.724528, 72.017919], [18.645458, 72.01931], [18.566378, 72.020672], [18.487286, 72.022004], [18.408183, 72.023306], [18.329069, 72.024578], [18.249946, 72.02582], [18.170812, 72.027033], [18.091668, 72.028215], [18.012515, 72.029368], [17.933352, 72.030491], [17.854181, 72.031584], [17.775, 72.032647], [17.695811, 72.03368], [17.616613, 72.034684], [17.537408, 72.035657], [17.458194, 72.036601], [17.378973, 72.037514], [17.299744, 72.038398], [17.220508, 72.039252], [17.141266, 72.040076], [17.062016, 72.04087], [16.98276, 72.041634], [16.903498, 72.042368], [16.82423, 72.043072], [16.744957, 72.043747], [16.665678, 72.044391], [16.586394, 72.045005], [16.507105, 72.04559], [16.427811, 72.046144], [16.348512, 72.046669], [16.26921, 72.047163], [16.189903, 72.047628], [16.110593, 72.048062], [16.03128, 72.048467], [15.951963, 72.048842], [15.872643, 72.049186], [15.79332, 72.049501], [15.713995, 72.049786], [15.634668, 72.050041], [15.555339, 72.050266], [15.476008, 72.05046], [15.396676, 72.050625], [15.317342, 72.05076], [15.238007, 72.050865], [15.158672, 72.05094], [15.079336, 72.050985], [15, 72.051], [14.920664, 72.050985], [14.841328, 72.05094], [14.761993, 72.050865], [14.682658, 72.05076], [14.603324, 72.050625], [14.523992, 72.05046], [14.444661, 72.050266], [14.365332, 72.050041], [14.286005, 72.049786], [14.20668, 72.049501], [14.127357, 72.049186], [14.048037, 72.048842], [13.96872, 72.048467], [13.889407, 72.048062], [13.810097, 72.047628], [13.73079, 72.047163], [13.651488, 72.046669], [13.572189, 72.046144], [13.492895, 72.04559], [13.413606, 72.045005], [13.334322, 72.044391], [13.255043, 72.043747], [13.17577, 72.043072], [13.096502, 72.042368], [13.01724, 72.041634], [12.937984, 72.04087], [12.858734, 72.040076], [12.779492, 72.039252], [12.700256, 72.038398], [12.621027, 72.037514], [12.541806, 72.036601], [12.462592, 72.035657], [12.383387, 72.034684], [12.304189, 72.03368], [12.225, 72.032647], [12.145819, 72.031584], [12.066648, 72.030491], [11.987485, 72.029368], [11.908332, 72.028215], [11.829188, 72.027033], [11.750054, 72.02582], [11.670931, 72.024578], [11.591817, 72.023306], [11.512714, 72.022004], [11.433622, 72.020672], [11.354542, 72.01931], [11.275472, 72.017919], [11.196414, 72.016497], [11.117368, 72.015046], [11.038333, 72.013565], [10.959311, 72.012055], [10.880302, 72.010514], [10.801305, 72.008944], [10.722321, 72.007344], [10.643351, 72.005714], [10.564394, 72.004054], [10.48545, 72.002365], [10.406521, 72.000646], [10.327606, 71.998897], [10.248705, 71.997119], [10.169819, 71.995311], [10.090948, 71.993473], [10.012092, 71.991605], [9.933251, 71.989708], [9.854426, 71.987781], [9.775617, 71.985824], [9.696824, 71.983838], [9.618047, 71.981822], [9.539287, 71.979777], [9.460544, 71.977702], [9.381817, 71.975597], [9.303108, 71.973462], [9.224417, 71.971298], [9.145743, 71.969105], [9.067087, 71.966882], [8.988449, 71.964629], [8.90983, 71.962347], [8.83123, 71.960035], [8.752648, 71.957694], [8.674086, 71.955323], [8.595543, 71.952923], [8.517019, 71.950493], [8.438515, 71.948034], [8.360032, 71.945545], [8.281569, 71.943027], [8.203126, 71.940479], [8.124704, 71.937902], [8.046303, 71.935296], [7.967923, 71.93266], [7.889565, 71.929994], [7.811228, 71.9273], [7.732914, 71.924576], [7.654621, 71.921822], [7.576351, 71.91904], [7.498103, 71.916228], [7.419879, 71.913386], [7.341677, 71.910516], [7.263498, 71.907616], [7.185343, 71.904687], [7.107212, 71.901728], [7.029104, 71.89874], [6.951021, 71.895724], [6.872962, 71.892677], [6.794928, 71.889602], [6.716919, 71.886498], [6.638934, 71.883364], [6.560975, 71.880201], [6.483042, 71.877009], [6.405134, 71.873788], [6.327252, 71.870538], [6.249396, 71.867259], [6.171566, 71.86395], [6.093764, 71.860613], [6.015987, 71.857247], [5.938238, 71.853851], [5.860517, 71.850427], [5.782822, 71.846973], [5.705155, 71.843491], [5.627517, 71.839979], [5.549906, 71.836439], [5.472323, 71.83287], [5.39477, 71.829272], [5.317244, 71.825645], [5.239748, 71.821989], [5.162281, 71.818304], [5.084843, 71.81459], [5.007435, 71.810848], [4.930057, 71.807077], [4.852709, 71.803277], [4.775391, 71.799448], [4.698103, 71.79559], [4.620846, 71.791704], [4.54362, 71.787789], [4.466424, 71.783846], [4.38926, 71.779873], [4.312128, 71.775872], [4.235027, 71.771843], [4.157958, 71.767784], [4.080921, 71.763698], [4.003917, 71.759582], [3.926944, 71.755438], [3.850005, 71.751266], [3.773098, 71.747065], [3.696225, 71.742835], [3.619385, 71.738577], [3.542578, 71.734291], [3.465805, 71.729976], [3.389066, 71.725633], [3.31236, 71.721261], [3.23569, 71.716861], [3.159053, 71.712432], [3.082451, 71.707976], [3.005885, 71.703491], [2.929353, 71.698977], [2.852856, 71.694435], [2.776395, 71.689866], [2.69997, 71.685267], [2.62358, 71.680641], [2.547226, 71.675987], [2.470909, 71.671304], [2.394628, 71.666593], [2.318383, 71.661854], [2.242176, 71.657087], [2.166005, 71.652292], [2.089871, 71.647469], [2.013775, 71.642617], [1.937716, 71.637738], [1.861696, 71.632831], [1.785712, 71.627896], [1.709767, 71.622932], [1.633861, 71.617941], [1.557993, 71.612922], [1.482163, 71.607875], [1.406372, 71.602801], [1.33062, 71.597698], [1.254908, 71.592568], [1.179234, 71.58741], [1.103601, 71.582224], [1.028007, 71.57701], [0.952452, 71.571769], [0.876938, 71.5665], [0.801465, 71.561203], [0.726031, 71.555879], [0.650638, 71.550527], [0.575286, 71.545147], [0.499975, 71.53974], [0.424705, 71.534305], [0.349477, 71.528843], [0.274289, 71.523354], [0.199144, 71.517836], [0.12404, 71.512292], [0.048978, 71.50672], [-0.026041, 71.50112], [-0.101019, 71.495494], [-0.175954, 71.489839], [-0.250846, 71.484158], [-0.325695, 71.478449], [-0.400502, 71.472713], [-0.475265, 71.46695], [-0.549985, 71.46116], [-0.624662, 71.455342], [-0.699295, 71.449497], [-0.773884, 71.443625], [-0.848429, 71.437726], [-0.92293, 71.4318], [-0.997387, 71.425847], [-1.071799, 71.419866], [-1.146167, 71.413859], [-1.22049, 71.407825], [-1.294768, 71.401763], [-1.369001, 71.395675], [-1.443189, 71.38956], [-1.517331, 71.383418], [-1.591428, 71.377249], [-1.66548, 71.371054], [-1.739485, 71.364831], [-1.813445, 71.358582], [-1.887358, 71.352306], [-1.961225, 71.346003], [-2.035046, 71.339674], [-2.10882, 71.333318], [-2.182547, 71.326935], [-2.256228, 71.320526], [-2.329861, 71.31409], [-2.403448, 71.307628], [-2.476987, 71.301139], [-2.550478, 71.294624], [-2.623922, 71.288082], [-2.697318, 71.281513], [-2.770667, 71.274919], [-2.843967, 71.268297], [-2.917219, 71.26165], [-2.990423, 71.254976], [-3.063578, 71.248276], [-3.136685, 71.24155], [-3.209743, 71.234797], [-3.282753, 71.228018], [-3.355713, 71.221213], [-3.428624, 71.214382], [-3.501486, 71.207525], [-3.574299, 71.200641], [-3.647062, 71.193732], [-3.719775, 71.186796], [-3.792439, 71.179835], [-3.865052, 71.172847], [-3.937616, 71.165834], [-4.010129, 71.158794], [-4.082592, 71.151729], [-4.155005, 71.144638], [-4.227367, 71.137521], [-4.299679, 71.130378], [-4.371939, 71.123209], [-4.444149, 71.116015], [-4.516307, 71.108795], [-4.588415, 71.101549], [-4.660471, 71.094277], [-4.732476, 71.08698], [-4.804429, 71.079658], [-4.87633, 71.072309], [-4.94818, 71.064936], [-5.019978, 71.057536], [-5.091724, 71.050112], [-5.163417, 71.042661], [-5.235058, 71.035186], [-5.306647, 71.027685], [-5.378184, 71.020158], [-5.449668, 71.012607], [-5.521099, 71.005029], [-5.592477, 70.997427], [-5.663803, 70.9898], [-5.735075, 70.982147], [-5.806294, 70.974469], [-5.87746, 70.966766], [-5.948573, 70.959038], [-6.019632, 70.951284], [-6.090637, 70.943506], [-6.161589, 70.935703], [-6.232487, 70.927874], [-6.303331, 70.920021], [-6.374121, 70.912143], [-6.444856, 70.90424], [-6.515538, 70.896312], [-6.586165, 70.888359], [-6.656738, 70.880381], [-6.727256, 70.872379], [-6.79772, 70.864351], [-6.868129, 70.856299], [-6.938483, 70.848223], [-7.008782, 70.840122], [-7.079027, 70.831996], [-7.149216, 70.823845], [-7.219349, 70.81567], [-7.289428, 70.807471], [-7.359451, 70.799247], [-7.429418, 70.790998], [-7.49933, 70.782725], [-7.569187, 70.774428], [-7.638987, 70.766106], [-7.708732, 70.75776], [-7.778421, 70.74939], [-7.848053, 70.740996], [-7.91763, 70.732577], [-7.98715, 70.724134], [-8.056614, 70.715667], [-8.126021, 70.707175], [-8.195373, 70.69866], [-8.264667, 70.69012], [-8.333905, 70.681557], [-8.403086, 70.672969], [-8.47221, 70.664358], [-8.541278, 70.655722], [-8.514614, 70.632336], [-8.488013, 70.608946], [-8.461473, 70.585553], [-8.434994, 70.562155], [-8.408577, 70.538754], [-8.382221, 70.515348], [-8.355926, 70.491939], [-8.329691, 70.468527], [-8.303516, 70.44511], [-8.277402, 70.42169], [-8.251348, 70.398266], [-8.225353, 70.374838], [-8.199418, 70.351406], [-8.173542, 70.327971], [-8.147726, 70.304532], [-8.121968, 70.281089], [-8.096269, 70.257643], [-8.070629, 70.234193], [-8.045047, 70.21074], [-8.019523, 70.187282], [-7.994057, 70.163822], [-7.968649, 70.140357], [-7.943299, 70.116889], [-7.918005, 70.093417], [-7.892769, 70.069942], [-7.86759, 70.046464], [-7.842468, 70.022981], [-7.817402, 69.999495], [-7.792393, 69.976006], [-7.76744, 69.952513], [-7.742543, 69.929017], [-7.717702, 69.905517], [-7.692916, 69.882014], [-7.668186, 69.858507], [-7.643511, 69.834997], [-7.618891, 69.811483], [-7.594326, 69.787966], [-7.569816, 69.764446], [-7.545361, 69.740922], [-7.520959, 69.717395], [-7.496612, 69.693864], [-7.472319, 69.67033], [-7.44808, 69.646793], [-7.423894, 69.623252], [-7.399762, 69.599709], [-7.375683, 69.576161], [-7.351657, 69.552611], [-7.327684, 69.529057], [-7.303764, 69.5055], [-7.279896, 69.481939], [-7.256081, 69.458376], [-7.232318, 69.434809], [-7.208607, 69.411239], [-7.184948, 69.387665], [-7.16134, 69.364089], [-7.137784, 69.340509], [-7.11428, 69.316926], [-7.090827, 69.29334], [-7.067424, 69.269751], [-7.044073, 69.246158], [-7.020772, 69.222562], [-6.997522, 69.198964], [-6.974322, 69.175362], [-6.951173, 69.151757], [-6.928073, 69.128149], [-6.905023, 69.104538], [-6.882023, 69.080923], [-6.859073, 69.057306], [-6.836172, 69.033686], [-6.81332, 69.010062], [-6.790517, 68.986436], [-6.767763, 68.962806], [-6.745058, 68.939173], [-6.722402, 68.915538], [-6.699794, 68.891899], [-6.677234, 68.868258], [-6.654722, 68.844613], [-6.632259, 68.820966], [-6.609843, 68.797315], [-6.587474, 68.773662], [-6.565154, 68.750006], [-6.54288, 68.726346], [-6.520654, 68.702684], [-6.498475, 68.679019], [-6.476343, 68.655351], [-6.454257, 68.63168], [-6.432218, 68.608006], [-6.410226, 68.58433], [-6.38828, 68.56065], [-6.36638, 68.536968], [-6.344525, 68.513282], [-6.322717, 68.489594], [-6.300955, 68.465903], [-6.279238, 68.44221], [-6.257566, 68.418513], [-6.23594, 68.394814], [-6.214359, 68.371112], [-6.192823, 68.347407], [-6.171332, 68.323699], [-6.149885, 68.299989], [-6.128483, 68.276276], [-6.107126, 68.25256], [-6.085812, 68.228841], [-6.064543, 68.20512], [-6.043318, 68.181396], [-6.022137, 68.157669], [-6.000999, 68.133939], [-5.979905, 68.110207], [-5.958855, 68.086472], [-5.937848, 68.062735], [-5.916883, 68.038995], [-5.895962, 68.015252], [-5.875084, 67.991506], [-5.854249, 67.967758], [-5.833456, 67.944007], [-5.812706, 67.920254], [-5.791998, 67.896498], [-5.771333, 67.872739], [-5.750709, 67.848978], [-5.730128, 67.825214], [-5.709588, 67.801448], [-5.68909, 67.777679], [-5.668634, 67.753908], [-5.648219, 67.730133], [-5.627846, 67.706357], [-5.607513, 67.682578], [-5.587222, 67.658796], [-5.566972, 67.635012], [-5.546762, 67.611225], [-5.526594, 67.587436], [-5.506465, 67.563644], [-5.486378, 67.53985], [-5.46633, 67.516053], [-5.446323, 67.492254], [-5.426356, 67.468453], [-5.406428, 67.444649], [-5.386541, 67.420842], [-5.366693, 67.397033], [-5.346885, 67.373222], [-5.327117, 67.349408], [-5.307387, 67.325592], [-5.287697, 67.301773], [-5.268046, 67.277952], [-5.248434, 67.254128], [-5.228861, 67.230303], [-5.209327, 67.206474], [-5.189831, 67.182644], [-5.170374, 67.158811], [-5.150955, 67.134976], [-5.131574, 67.111138], [-5.112232, 67.087298], [-5.092927, 67.063455], [-5.073661, 67.039611], [-5.054432, 67.015764], [-5.035241, 66.991914], [-5.016088, 66.968063], [-4.996972, 66.944209], [-4.977894, 66.920353], [-4.958852, 66.896494], [-4.939848, 66.872633], [-4.920881, 66.84877], [-4.901951, 66.824905], [-4.883058, 66.801037], [-4.864201, 66.777167], [-4.845381, 66.753295], [-4.826597, 66.729421], [-4.80785, 66.705545], [-4.789139, 66.681666], [-4.770464, 66.657785], [-4.751825, 66.633902], [-4.733222, 66.610016], [-4.714655, 66.586129], [-4.696124, 66.562239], [-4.677628, 66.538347], [-4.659168, 66.514453], [-4.640743, 66.490556], [-4.622354, 66.466658], [-4.604, 66.442757], [-4.58568, 66.418854], [-4.567396, 66.394949], [-4.549147, 66.371042], [-4.530932, 66.347133], [-4.512752, 66.323222], [-4.494607, 66.299308], [-4.476496, 66.275393], [-4.45842, 66.251475], [-4.440377, 66.227555], [-4.422369, 66.203634], [-4.404395, 66.17971], [-4.386455, 66.155784], [-4.368549, 66.131855], [-4.350677, 66.107925], [-4.332838, 66.083993], [-4.315033, 66.060059], [-4.297261, 66.036123], [-4.279523, 66.012184], [-4.261818, 65.988244], [-4.244146, 65.964301], [-4.226508, 65.940357], [-4.208902, 65.91641], [-4.191329, 65.892462], [-4.173789, 65.868511], [-4.156282, 65.844559], [-4.138807, 65.820604], [-4.121365, 65.796648], [-4.103955, 65.77269], [-4.086578, 65.748729], [-4.069232, 65.724767], [-4.051919, 65.700802], [-4.034638, 65.676836], [-4.017389, 65.652868], [-4.000172, 65.628898], [-3.982987, 65.604925], [-3.965833, 65.580951], [-3.948711, 65.556975], [-3.93162, 65.532997], [-3.914561, 65.509017], [-3.897533, 65.485036], [-3.880536, 65.461052], [-3.863571, 65.437066], [-3.846636, 65.413079], [-3.829733, 65.38909], [-3.81286, 65.365098], [-3.796018, 65.341105], [-3.779207, 65.31711], [-3.762426, 65.293113], [-3.745676, 65.269115], [-3.728957, 65.245114], [-3.712267, 65.221111], [-3.695608, 65.197107], [-3.678979, 65.173101], [-3.662381, 65.149093], [-3.645812, 65.125083], [-3.629273, 65.101072], [-3.612764, 65.077058], [-3.596285, 65.053043], [-3.579836, 65.029026], [-3.563416, 65.005007], [-3.547025, 64.980986], [-3.530664, 64.956964], [-3.514332, 64.93294], [-3.49803, 64.908914], [-3.481757, 64.884886], [-3.465513, 64.860856], [-3.449297, 64.836825], [-3.433111, 64.812792], [-3.416954, 64.788757], [-3.400825, 64.76472], [-3.384725, 64.740682], [-3.368654, 64.716642], [-3.352611, 64.6926], [-3.336597, 64.668556], [-3.320611, 64.644511], [-3.304653, 64.620464], [-3.288724, 64.596415], [-3.272822, 64.572365], [-3.256949, 64.548312], [-3.241104, 64.524258], [-3.225287, 64.500203], [-3.209497, 64.476146], [-3.193735, 64.452087], [-3.178001, 64.428026], [-3.162294, 64.403964], [-3.146615, 64.3799], [-3.130964, 64.355834], [-3.11534, 64.331767], [-3.099743, 64.307698], [-3.084173, 64.283627], [-3.06863, 64.259555], [-3.053115, 64.235481], [-3.037626, 64.211405], [-3.022165, 64.187328], [-3.00673, 64.163249], [-2.991322, 64.139168], [-2.97594, 64.115086], [-2.960586, 64.091003], [-2.945258, 64.066917], [-2.929956, 64.04283], [-2.914681, 64.018742], [-2.899432, 63.994652], [-2.884209, 63.97056], [-2.869013, 63.946466], [-2.853842, 63.922371], [-2.838698, 63.898275], [-2.82358, 63.874177], [-2.808487, 63.850077], [-2.793421, 63.825976], [-2.77838, 63.801873], [-2.763365, 63.777769], [-2.748375, 63.753663], [-2.733411, 63.729555], [-2.718473, 63.705446], [-2.70356, 63.681336], [-2.688672, 63.657223], [-2.67381, 63.63311], [-2.658973, 63.608995], [-2.644161, 63.584878], [-2.629374, 63.56076], [-2.614612, 63.53664], [-2.599875, 63.512519], [-2.585163, 63.488396], [-2.570476, 63.464272], [-2.555813, 63.440146], [-2.541175, 63.416018], [-2.526562, 63.39189], [-2.511974, 63.367759], [-2.497409, 63.343628], [-2.48287, 63.319494], [-2.468354, 63.29536], [-2.453863, 63.271223], [-2.439396, 63.247086], [-2.424953, 63.222947], [-2.410535, 63.198806], [-2.39614, 63.174664], [-2.38177, 63.150521], [-2.367423, 63.126376], [-2.3531, 63.102229], [-2.338801, 63.078081], [-2.324525, 63.053932], [-2.310274, 63.029781], [-2.296046, 63.005629], [-2.281841, 62.981476], [-2.26766, 62.957321], [-2.253502, 62.933164], [-2.239368, 62.909006], [-2.225257, 62.884847], [-2.211169, 62.860686], [-2.197104, 62.836524], [-2.183062, 62.812361], [-2.169044, 62.788196], [-2.155048, 62.76403], [-2.141075, 62.739862], [-2.127126, 62.715693], [-2.113199, 62.691523], [-2.099294, 62.667351], [-2.085413, 62.643178], [-2.071554, 62.619003], [-2.057717, 62.594827], [-2.043903, 62.57065], [-2.030112, 62.546472], [-2.016343, 62.522292], [-2.002596, 62.49811], [-1.988871, 62.473928], [-1.975169, 62.449744], [-1.961489, 62.425558], [-1.947831, 62.401372], [-1.934195, 62.377184], [-1.920581, 62.352994], [-1.906989, 62.328804], [-1.893419, 62.304612], [-1.87987, 62.280418], [-1.866344, 62.256224], [-1.852839, 62.232028], [-1.839355, 62.20783], [-1.825894, 62.183632], [-1.812454, 62.159432], [-1.799035, 62.135231], [-1.785638, 62.111028], [-1.772262, 62.086824], [-1.758907, 62.062619], [-1.745574, 62.038413], [-1.732262, 62.014205], [-1.718971, 61.989997], [-1.705701, 61.965786], [-1.692452, 61.941575], [-1.679224, 61.917362], [-1.666017, 61.893148], [-1.652831, 61.868933], [-1.639666, 61.844716], [-1.626522, 61.820499], [-1.613398, 61.79628], [-1.600295, 61.772059], [-1.587213, 61.747838], [-1.574151, 61.723615], [-1.56111, 61.699391], [-1.548089, 61.675166], [-1.535088, 61.650939], [-1.522108, 61.626712], [-1.509149, 61.602483], [-1.496209, 61.578252], [-1.48329, 61.554021], [-1.470391, 61.529789], [-1.457512, 61.505555], [-1.444653, 61.48132], [-1.431814, 61.457083], [-1.418995, 61.432846], [-1.406196, 61.408607], [-1.393417, 61.384367], [-1.380657, 61.360126], [-1.367917, 61.335884], [-1.355197, 61.311641], [-1.342497, 61.287396], [-1.329816, 61.26315], [-1.317155, 61.238903], [-1.304514, 61.214655], [-1.291891, 61.190406], [-1.279289, 61.166155], [-1.266705, 61.141904], [-1.254141, 61.117651], [-1.241596, 61.093397], [-1.229071, 61.069142], [-1.216564, 61.044885], [-1.204077, 61.020628], [-1.191609, 60.996369], [-1.17916, 60.97211], [-1.166729, 60.947849], [-1.154318, 60.923587], [-1.141926, 60.899323], [-1.129552, 60.875059], [-1.117197, 60.850794], [-1.104861, 60.826527], [-1.092544, 60.802259], [-1.080245, 60.77799], [-1.067965, 60.75372], [-1.055704, 60.729449], [-1.043461, 60.705177], [-1.031237, 60.680904], [-1.01903, 60.656629], [-1.006843, 60.632354], [-0.994674, 60.608077], [-0.982522, 60.583799], [-0.97039, 60.55952], [-0.958275, 60.53524], [-0.946179, 60.510959], [-0.9341, 60.486677], [-0.92204, 60.462394], [-0.909998, 60.43811], [-0.897974, 60.413824], [-0.885968, 60.389538], [-0.873979, 60.36525], [-0.862009, 60.340961], [-0.850056, 60.316672], [-0.838121, 60.292381], [-0.826204, 60.268089], [-0.814304, 60.243796], [-0.802422, 60.219502], [-0.790558, 60.195207], [-0.778711, 60.170911], [-0.766882, 60.146614], [-0.75507, 60.122316], [-0.743276, 60.098016], [-0.731499, 60.073716], [-0.719739, 60.049415], [-0.707997, 60.025112], [-0.696272, 60.000809], [-0.684564, 59.976504], [-0.672874, 59.952199], [-0.6612, 59.927892], [-0.649544, 59.903585], [-0.637904, 59.879276], [-0.626282, 59.854966], [-0.614676, 59.830656], [-0.603088, 59.806344], [-0.591516, 59.782031], [-0.579962, 59.757718], [-0.568424, 59.733403], [-0.556902, 59.709087], [-0.545398, 59.68477], [-0.53391, 59.660453], [-0.522439, 59.636134], [-0.510985, 59.611814], [-0.499547, 59.587493], [-0.488125, 59.563172], [-0.47672, 59.538849], [-0.465332, 59.514525], [-0.45396, 59.490201], [-0.442604, 59.465875], [-0.431265, 59.441548], [-0.419942, 59.41722], [-0.408635, 59.392892], [-0.397345, 59.368562], [-0.38607, 59.344232], [-0.374812, 59.3199], [-0.36357, 59.295568], [-0.352344, 59.271234], [-0.341134, 59.2469], [-0.32994, 59.222564], [-0.318762, 59.198228], [-0.3076, 59.17389], [-0.296454, 59.149552], [-0.285323, 59.125213], [-0.274208, 59.100873], [-0.26311, 59.076531], [-0.252027, 59.052189], [-0.240959, 59.027846], [-0.229907, 59.003502], [-0.218871, 58.979157], [-0.207851, 58.954812], [-0.196846, 58.930465], [-0.185856, 58.906117], [-0.174882, 58.881768], [-0.163924, 58.857419], [-0.15298, 58.833068], [-0.142053, 58.808717], [-0.13114, 58.784364], [-0.120243, 58.760011], [-0.109361, 58.735657], [-0.098494, 58.711302], [-0.087643, 58.686946], [-0.076806, 58.662589], [-0.065985, 58.638231], [-0.055179, 58.613872], [-0.044388, 58.589513], [-0.033612, 58.565152], [-0.022851, 58.540791], [-0.012105, 58.516428], [-0.001373, 58.492065], [0.009343, 58.467701], [0.020044, 58.443336], [0.030731, 58.41897], [0.041403, 58.394603], [0.05206, 58.370235], [0.062703, 58.345867], [0.073331, 58.321497], [0.083944, 58.297127], [0.094542, 58.272756], [0.105126, 58.248383], [0.115696, 58.22401], [0.126251, 58.199637], [0.136791, 58.175262], [0.147317, 58.150886], [0.157829, 58.12651], [0.168326, 58.102132], [0.178809, 58.077754], [0.189277, 58.053375], [0.199732, 58.028995], [0.210172, 58.004615], [0.220598, 57.980233], [0.231009, 57.955851], [0.241407, 57.931467], [0.25179, 57.907083], [0.26216, 57.882698], [0.272515, 57.858312], [0.282856, 57.833925], [0.293183, 57.809538], [0.303497, 57.78515], [0.313796, 57.76076], [0.324082, 57.73637], [0.334353, 57.711979], [0.344611, 57.687588], [0.354855, 57.663195], [0.365085, 57.638802], [0.375302, 57.614408], [0.385505, 57.590013], [0.395694, 57.565617], [0.405869, 57.54122], [0.416031, 57.516823], [0.426179, 57.492424], [0.436314, 57.468025], [0.446435, 57.443625], [0.456543, 57.419225], [0.466637, 57.394823], [0.476718, 57.370421], [0.486785, 57.346018], [0.496839, 57.321614], [0.50688, 57.297209], [0.516907, 57.272804], [0.526921, 57.248397], [0.536922, 57.22399], [0.54691, 57.199582], [0.556884, 57.175173], [0.566845, 57.150764], [0.576794, 57.126354], [0.586729, 57.101943], [0.59665, 57.077531], [0.606559, 57.053118], [0.616455, 57.028705], [0.626338, 57.00429], [0.636208, 56.979875], [0.646065, 56.95546], [0.655909, 56.931043], [0.66574, 56.906626], [0.675558, 56.882208], [0.685364, 56.857789], [0.695157, 56.833369], [0.704937, 56.808949], [0.714704, 56.784528], [0.724458, 56.760106], [0.7342, 56.735683], [0.743929, 56.71126], [0.753646, 56.686836], [0.76335, 56.662411], [0.773041, 56.637985], [0.78272, 56.613559], [0.792386, 56.589131], [0.80204, 56.564703], [0.811682, 56.540275], [0.821311, 56.515845], [0.830927, 56.491415], [0.840531, 56.466984], [0.850123, 56.442553], [0.859703, 56.41812], [0.86927, 56.393687], [0.878825, 56.369253], [0.888367, 56.344819], [0.897898, 56.320383], [0.907416, 56.295947], [0.916922, 56.27151], [0.926416, 56.247073], [0.935898, 56.222635], [0.945368, 56.198196], [0.954825, 56.173756], [0.964271, 56.149316], [0.973705, 56.124874], [0.983127, 56.100433], [0.992536, 56.07599], [1.001934, 56.051547], [1.01132, 56.027103], [1.020694, 56.002658], [1.030056, 55.978213], [1.039406, 55.953766], [1.048745, 55.92932], [1.058072, 55.904872], [1.067387, 55.880424], [1.07669, 55.855975], [1.085982, 55.831525], [1.095262, 55.807075], [1.10453, 55.782624], [1.113787, 55.758172], [1.123032, 55.73372], [1.132265, 55.709267], [1.141487, 55.684813], [1.150697, 55.660358], [1.159896, 55.635903], [1.169084, 55.611447], [1.17826, 55.586991], [1.187424, 55.562533], [1.196577, 55.538075], [1.205719, 55.513617], [1.214849, 55.489157], [1.223968, 55.464697], [1.233076, 55.440237], [1.242173, 55.415775], [1.251258, 55.391313], [1.260332, 55.366851], [1.269395, 55.342387], [1.278446, 55.317923], [1.287487, 55.293459], [1.296516, 55.268993], [1.305534, 55.244527], [1.314541, 55.220061], [1.323537, 55.195593], [1.332522, 55.171125], [1.341496, 55.146657], [1.350459, 55.122187], [1.359411, 55.097717], [1.368352, 55.073247], [1.377282, 55.048775], [1.386201, 55.024303], [1.395109, 54.999831], [1.404007, 54.975358], [1.412893, 54.950884], [1.421769, 54.926409], [1.430634, 54.901934], [1.439488, 54.877458], [1.448332, 54.852982], [1.457164, 54.828505], [1.465986, 54.804027], [1.474798, 54.779548], [1.483598, 54.755069], [1.492388, 54.73059], [1.501168, 54.706109], [1.509937, 54.681628], [1.518695, 54.657147], [1.527443, 54.632665], [1.53618, 54.608182], [1.544906, 54.583698], [1.553623, 54.559214], [1.562328, 54.53473], [1.571024, 54.510244], [1.579709, 54.485758], [1.588383, 54.461272], [1.597047, 54.436785], [1.605701, 54.412297], [1.614344, 54.387808], [1.622978, 54.363319], [1.6316, 54.33883], [1.640213, 54.314339], [1.648815, 54.289848], [1.657407, 54.265357], [1.665989, 54.240865], [1.674561, 54.216372], [1.683123, 54.191879], [1.691674, 54.167385], [1.700215, 54.14289], [1.708746, 54.118395], [1.717268, 54.093899], [1.725779, 54.069403], [1.73428, 54.044906], [1.742771, 54.020408], [1.751252, 53.99591], [1.759723, 53.971412], [1.768184, 53.946912], [1.776635, 53.922412], [1.785076, 53.897912], [1.793508, 53.873411], [1.801929, 53.848909], [1.810341, 53.824407], [1.818742, 53.799904], [1.827134, 53.7754], [1.835517, 53.750896], [1.843889, 53.726392], [1.852252, 53.701886], [1.860605, 53.677381], [1.868948, 53.652874], [1.877281, 53.628367], [1.885605, 53.60386], [1.893919, 53.579351], [1.902224, 53.554843], [1.910519, 53.530334], [1.918804, 53.505824], [1.92708, 53.481313], [1.935346, 53.456802], [1.943603, 53.432291], [1.95185, 53.407779], [1.960087, 53.383266], [1.968316, 53.358753], [1.976534, 53.334239], [1.984744, 53.309724], [1.992943, 53.285209], [2.001134, 53.260694], [2.009315, 53.236178], [2.017487, 53.211661], [2.025649, 53.187144], [2.033802, 53.162626], [2.041946, 53.138108], [2.05008, 53.113589], [2.058205, 53.08907], [2.066321, 53.06455], [2.074428, 53.040029], [2.082525, 53.015508], [2.090613, 52.990987], [2.098693, 52.966464], [2.106762, 52.941942], [2.114823, 52.917418], [2.122875, 52.892895], [2.130917, 52.86837], [2.138951, 52.843845], [2.146975, 52.81932], [2.15499, 52.794794], [2.162997, 52.770267], [2.170994, 52.74574], [2.178982, 52.721213], [2.186962, 52.696685], [2.194932, 52.672156], [2.202893, 52.647627], [2.210846, 52.623097], [2.218789, 52.598567], [2.226724, 52.574036], [2.23465, 52.549505], [2.242567, 52.524973], [2.250475, 52.50044]];\n\n","import { Record } from \"../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { WeatherTypeModule_Parameter_$reflection } from \"../../StenaWeather.Domain/Weather.js\";\nimport { ModelUpdateStatus_$reflection, ModelArea_$reflection, ModelKey_$reflection } from \"../../StenaWeather.Domain/Models.js\";\nimport { unit_type, lambda_type, bool_type, option_type, class_type, string_type, int32_type, record_type, list_type } from \"../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { Provider_$reflection } from \"../../StenaWeather.Domain/Forecast.js\";\n\nexport class Request_UpdatePriority extends Record {\n constructor(Parameter, Models) {\n super();\n this.Parameter = Parameter;\n this.Models = Models;\n }\n}\n\nexport function Request_UpdatePriority_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.Models.API.Request.UpdatePriority\", [], Request_UpdatePriority, () => [[\"Parameter\", WeatherTypeModule_Parameter_$reflection()], [\"Models\", list_type(ModelKey_$reflection())]]);\n}\n\nexport class Response_Model extends Record {\n constructor(Priority, DataSourceDescription, Provider, ModelName, SpatialResolution, SpatialResolutionInKm, TemporalResolution, Area, TemporalRange, UpdateFrequency, LastUpdated, ForecastCreated, SourceType, IsRotated, Status) {\n super();\n this.Priority = (Priority | 0);\n this.DataSourceDescription = DataSourceDescription;\n this.Provider = Provider;\n this.ModelName = ModelName;\n this.SpatialResolution = SpatialResolution;\n this.SpatialResolutionInKm = SpatialResolutionInKm;\n this.TemporalResolution = TemporalResolution;\n this.Area = Area;\n this.TemporalRange = TemporalRange;\n this.UpdateFrequency = UpdateFrequency;\n this.LastUpdated = LastUpdated;\n this.ForecastCreated = ForecastCreated;\n this.SourceType = SourceType;\n this.IsRotated = IsRotated;\n this.Status = Status;\n }\n}\n\nexport function Response_Model_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.Models.API.Response.Model\", [], Response_Model, () => [[\"Priority\", int32_type], [\"DataSourceDescription\", string_type], [\"Provider\", Provider_$reflection()], [\"ModelName\", string_type], [\"SpatialResolution\", string_type], [\"SpatialResolutionInKm\", string_type], [\"TemporalResolution\", class_type(\"System.TimeSpan\")], [\"Area\", ModelArea_$reflection()], [\"TemporalRange\", class_type(\"System.TimeSpan\")], [\"UpdateFrequency\", class_type(\"System.TimeSpan\")], [\"LastUpdated\", option_type(class_type(\"System.DateTimeOffset\"))], [\"ForecastCreated\", option_type(class_type(\"System.DateTimeOffset\"))], [\"SourceType\", string_type], [\"IsRotated\", bool_type], [\"Status\", ModelUpdateStatus_$reflection()]]);\n}\n\nexport class ModelsAPI extends Record {\n constructor(GetModels, SavePriorities) {\n super();\n this.GetModels = GetModels;\n this.SavePriorities = SavePriorities;\n }\n}\n\nexport function ModelsAPI_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.Models.API.ModelsAPI\", [], ModelsAPI, () => [[\"GetModels\", lambda_type(WeatherTypeModule_Parameter_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(Response_Model_$reflection())]))], [\"SavePriorities\", lambda_type(Request_UpdatePriority_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))]]);\n}\n\nexport function ModelsAPI_RouteBuilder(_arg, m) {\n return `/api/models/${m}`;\n}\n\n","import { Record, Union } from \"../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { lambda_type, unit_type, list_type, string_type, record_type, class_type, union_type } from \"../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\n\nexport class Response_SessionType extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Open\", \"Closed\"];\n }\n}\n\nexport function Response_SessionType_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Shared.Vessels.API.Response.SessionType\", [], Response_SessionType, () => [[], []]);\n}\n\nexport class Response_VesselSession extends Record {\n constructor(SessionId, CreatedAt, SessionType) {\n super();\n this.SessionId = SessionId;\n this.CreatedAt = CreatedAt;\n this.SessionType = SessionType;\n }\n}\n\nexport function Response_VesselSession_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.Vessels.API.Response.VesselSession\", [], Response_VesselSession, () => [[\"SessionId\", class_type(\"System.Guid\")], [\"CreatedAt\", class_type(\"System.DateTimeOffset\")], [\"SessionType\", Response_SessionType_$reflection()]]);\n}\n\nexport class Response_VesselInfo extends Record {\n constructor(VesselId, VesselName, Sessions) {\n super();\n this.VesselId = VesselId;\n this.VesselName = VesselName;\n this.Sessions = Sessions;\n }\n}\n\nexport function Response_VesselInfo_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.Vessels.API.Response.VesselInfo\", [], Response_VesselInfo, () => [[\"VesselId\", class_type(\"System.Guid\")], [\"VesselName\", string_type], [\"Sessions\", list_type(Response_VesselSession_$reflection())]]);\n}\n\nexport class VesselsAPI extends Record {\n constructor(GetVesselsInfo) {\n super();\n this.GetVesselsInfo = GetVesselsInfo;\n }\n}\n\nexport function VesselsAPI_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.Vessels.API.VesselsAPI\", [], VesselsAPI, () => [[\"GetVesselsInfo\", lambda_type(unit_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(Response_VesselInfo_$reflection())]))]]);\n}\n\nexport function VesselsAPI_RouteBuilder(_arg, m) {\n return `/api/vessels/${m}`;\n}\n\n","import { Record, Union } from \"../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { ModelKey_$reflection } from \"../../StenaWeather.Domain/Models.js\";\nimport { lambda_type, tuple_type, class_type, record_type, string_type, union_type, list_type } from \"../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { ForecastSource_$reflection, PointForecast_$reflection, TimePoint_$reflection } from \"../../StenaWeather.Domain/Forecast.js\";\nimport { WeatherTypeModule_Parameter_$reflection } from \"../../StenaWeather.Domain/Weather.js\";\n\nexport class Response_SessionModelSetup extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Best\", \"Predefined\"];\n }\n}\n\nexport function Response_SessionModelSetup_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Shared.SessionDetails.API.Response.SessionModelSetup\", [], Response_SessionModelSetup, () => [[], [[\"Item\", list_type(ModelKey_$reflection())]]]);\n}\n\nexport class Response_RouteWaypoint extends Record {\n constructor(Reference, TimePoint) {\n super();\n this.Reference = Reference;\n this.TimePoint = TimePoint;\n }\n}\n\nexport function Response_RouteWaypoint_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.SessionDetails.API.Response.RouteWaypoint\", [], Response_RouteWaypoint, () => [[\"Reference\", string_type], [\"TimePoint\", TimePoint_$reflection()]]);\n}\n\nexport class Response_SessionParamModelSetup extends Record {\n constructor(Parameter, ModelSetup) {\n super();\n this.Parameter = Parameter;\n this.ModelSetup = ModelSetup;\n }\n}\n\nexport function Response_SessionParamModelSetup_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.SessionDetails.API.Response.SessionParamModelSetup\", [], Response_SessionParamModelSetup, () => [[\"Parameter\", WeatherTypeModule_Parameter_$reflection()], [\"ModelSetup\", Response_SessionModelSetup_$reflection()]]);\n}\n\nexport class Response_SessionState extends Record {\n constructor(Token, CreatedAt) {\n super();\n this.Token = Token;\n this.CreatedAt = CreatedAt;\n }\n}\n\nexport function Response_SessionState_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.SessionDetails.API.Response.SessionState\", [], Response_SessionState, () => [[\"Token\", class_type(\"System.Guid\")], [\"CreatedAt\", class_type(\"System.DateTimeOffset\")]]);\n}\n\nexport class Response_SessionDetail extends Record {\n constructor(VesselName, CreatedAt, Parameters, Waypoints, SessionStates) {\n super();\n this.VesselName = VesselName;\n this.CreatedAt = CreatedAt;\n this.Parameters = Parameters;\n this.Waypoints = Waypoints;\n this.SessionStates = SessionStates;\n }\n}\n\nexport function Response_SessionDetail_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.SessionDetails.API.Response.SessionDetail\", [], Response_SessionDetail, () => [[\"VesselName\", string_type], [\"CreatedAt\", class_type(\"System.DateTimeOffset\")], [\"Parameters\", list_type(Response_SessionParamModelSetup_$reflection())], [\"Waypoints\", list_type(Response_RouteWaypoint_$reflection())], [\"SessionStates\", list_type(Response_SessionState_$reflection())]]);\n}\n\nexport class Response_SessionInterpolatedForecast extends Record {\n constructor(PointForecast, InterpolationInfo, Source) {\n super();\n this.PointForecast = PointForecast;\n this.InterpolationInfo = InterpolationInfo;\n this.Source = Source;\n }\n}\n\nexport function Response_SessionInterpolatedForecast_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.SessionDetails.API.Response.SessionInterpolatedForecast\", [], Response_SessionInterpolatedForecast, () => [[\"PointForecast\", PointForecast_$reflection()], [\"InterpolationInfo\", string_type], [\"Source\", ForecastSource_$reflection()]]);\n}\n\nexport class Response_RouteInterpolatedForecast extends Record {\n constructor(Token, Forecasts) {\n super();\n this.Token = Token;\n this.Forecasts = Forecasts;\n }\n}\n\nexport function Response_RouteInterpolatedForecast_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.SessionDetails.API.Response.RouteInterpolatedForecast\", [], Response_RouteInterpolatedForecast, () => [[\"Token\", class_type(\"System.Guid\")], [\"Forecasts\", list_type(tuple_type(Response_RouteWaypoint_$reflection(), list_type(Response_SessionInterpolatedForecast_$reflection())))]]);\n}\n\nexport class SessionDetailsAPI extends Record {\n constructor(GetSessionDetails, GetSessionResponseDetail) {\n super();\n this.GetSessionDetails = GetSessionDetails;\n this.GetSessionResponseDetail = GetSessionResponseDetail;\n }\n}\n\nexport function SessionDetailsAPI_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.SessionDetails.API.SessionDetailsAPI\", [], SessionDetailsAPI, () => [[\"GetSessionDetails\", lambda_type(class_type(\"System.Guid\"), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [Response_SessionDetail_$reflection()]))], [\"GetSessionResponseDetail\", lambda_type(class_type(\"System.Guid\"), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [Response_RouteInterpolatedForecast_$reflection()]))]]);\n}\n\nexport function SessionDetailsAPI_RouteBuilder(_arg, m) {\n return `/api/sessionDetails/${m}`;\n}\n\n","import { Record } from \"../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { WeatherTypeModule_Parameter_$reflection } from \"../../StenaWeather.Domain/Weather.js\";\nimport { ModelUpdateStatus_$reflection, ModelKey_$reflection } from \"../../StenaWeather.Domain/Models.js\";\nimport { lambda_type, unit_type, float64_type, class_type, string_type, record_type, list_type } from \"../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { Provider_$reflection } from \"../../StenaWeather.Domain/Forecast.js\";\n\nexport class Request_UpdatePriority extends Record {\n constructor(Parameter, Models) {\n super();\n this.Parameter = Parameter;\n this.Models = Models;\n }\n}\n\nexport function Request_UpdatePriority_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.Dashboards.API.Request.UpdatePriority\", [], Request_UpdatePriority, () => [[\"Parameter\", WeatherTypeModule_Parameter_$reflection()], [\"Models\", list_type(ModelKey_$reflection())]]);\n}\n\nexport class Response_Model extends Record {\n constructor(ModelName, Provider, Status, UpdateFrequency, LastUpdated, Downloaded, OutdatedAlertCoefficient) {\n super();\n this.ModelName = ModelName;\n this.Provider = Provider;\n this.Status = Status;\n this.UpdateFrequency = UpdateFrequency;\n this.LastUpdated = LastUpdated;\n this.Downloaded = Downloaded;\n this.OutdatedAlertCoefficient = OutdatedAlertCoefficient;\n }\n}\n\nexport function Response_Model_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.Dashboards.API.Response.Model\", [], Response_Model, () => [[\"ModelName\", string_type], [\"Provider\", Provider_$reflection()], [\"Status\", ModelUpdateStatus_$reflection()], [\"UpdateFrequency\", class_type(\"System.TimeSpan\")], [\"LastUpdated\", class_type(\"System.DateTimeOffset\")], [\"Downloaded\", class_type(\"System.DateTimeOffset\")], [\"OutdatedAlertCoefficient\", float64_type]]);\n}\n\nexport class DashboardsAPI extends Record {\n constructor(GetModels) {\n super();\n this.GetModels = GetModels;\n }\n}\n\nexport function DashboardsAPI_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.Dashboards.API.DashboardsAPI\", [], DashboardsAPI, () => [[\"GetModels\", lambda_type(unit_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(Response_Model_$reflection())]))]]);\n}\n\nexport function DashboardsAPI_RouteBuilder(_arg, m) {\n return `/api/dashboards/${m}`;\n}\n\n","import { Record, Union } from \"../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { class_type, record_type, bool_type, float64_type, list_type, option_type, union_type, string_type } from \"../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { Point_$reflection } from \"./Forecast.js\";\nimport { empty } from \"../fable_modules/fable-library-js.4.19.3/List.js\";\n\nexport class SensorId extends Union {\n constructor(Item) {\n super();\n this.tag = 0;\n this.fields = [Item];\n }\n cases() {\n return [\"SensorId\"];\n }\n}\n\nexport function SensorId_$reflection() {\n return union_type(\"StenaWeather.Domain.PortWind.SensorId\", [], SensorId, () => [[[\"Item\", string_type]]]);\n}\n\nexport function SensorId__get_Value(x) {\n return x.fields[0];\n}\n\nexport class SensorMetaData extends Record {\n constructor(SensorId, Name, Imei, Location, Address, Urls, QuayOrientation, QuayFlipVessel, Visible, Enabled) {\n super();\n this.SensorId = SensorId;\n this.Name = Name;\n this.Imei = Imei;\n this.Location = Location;\n this.Address = Address;\n this.Urls = Urls;\n this.QuayOrientation = QuayOrientation;\n this.QuayFlipVessel = QuayFlipVessel;\n this.Visible = Visible;\n this.Enabled = Enabled;\n }\n}\n\nexport function SensorMetaData_$reflection() {\n return record_type(\"StenaWeather.Domain.PortWind.SensorMetaData\", [], SensorMetaData, () => [[\"SensorId\", SensorId_$reflection()], [\"Name\", string_type], [\"Imei\", option_type(string_type)], [\"Location\", option_type(Point_$reflection())], [\"Address\", option_type(string_type)], [\"Urls\", list_type(string_type)], [\"QuayOrientation\", option_type(float64_type)], [\"QuayFlipVessel\", bool_type], [\"Visible\", bool_type], [\"Enabled\", bool_type]]);\n}\n\nexport function SensorMetaData_Default(sensorId, name) {\n return new SensorMetaData(sensorId, name, undefined, undefined, undefined, empty(), undefined, false, true, true);\n}\n\nexport class PortWindWeather extends Record {\n constructor(DateTime, WindSpeed, WindSpeedAverage, WindDirection, GustWindSpeed, MaxGustWindSpeed, WaveHeight, TideHeight, TidalFlowSpeed) {\n super();\n this.DateTime = DateTime;\n this.WindSpeed = WindSpeed;\n this.WindSpeedAverage = WindSpeedAverage;\n this.WindDirection = WindDirection;\n this.GustWindSpeed = GustWindSpeed;\n this.MaxGustWindSpeed = MaxGustWindSpeed;\n this.WaveHeight = WaveHeight;\n this.TideHeight = TideHeight;\n this.TidalFlowSpeed = TidalFlowSpeed;\n }\n}\n\nexport function PortWindWeather_$reflection() {\n return record_type(\"StenaWeather.Domain.PortWind.PortWindWeather\", [], PortWindWeather, () => [[\"DateTime\", class_type(\"System.DateTimeOffset\")], [\"WindSpeed\", option_type(float64_type)], [\"WindSpeedAverage\", option_type(float64_type)], [\"WindDirection\", option_type(float64_type)], [\"GustWindSpeed\", option_type(float64_type)], [\"MaxGustWindSpeed\", option_type(float64_type)], [\"WaveHeight\", option_type(float64_type)], [\"TideHeight\", option_type(float64_type)], [\"TidalFlowSpeed\", option_type(float64_type)]]);\n}\n\nexport function PortWindWeather_Default_Z53C0511E(dt) {\n return new PortWindWeather(dt, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined);\n}\n\nexport class PortWindWeatherResult extends Record {\n constructor(Weather, LastUpdated, Location) {\n super();\n this.Weather = Weather;\n this.LastUpdated = LastUpdated;\n this.Location = Location;\n }\n}\n\nexport function PortWindWeatherResult_$reflection() {\n return record_type(\"StenaWeather.Domain.PortWind.PortWindWeatherResult\", [], PortWindWeatherResult, () => [[\"Weather\", list_type(PortWindWeather_$reflection())], [\"LastUpdated\", class_type(\"System.DateTimeOffset\")], [\"Location\", option_type(Point_$reflection())]]);\n}\n\n","import { Record } from \"../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { record_type, lambda_type, class_type, list_type, unit_type } from \"../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { PortWindWeatherResult_$reflection, SensorId_$reflection, SensorMetaData_$reflection } from \"../../StenaWeather.Domain/PortWind.js\";\n\nexport class PortWindAPI extends Record {\n constructor(GetSensors, GetWeather, CheckAuthByIP) {\n super();\n this.GetSensors = GetSensors;\n this.GetWeather = GetWeather;\n this.CheckAuthByIP = CheckAuthByIP;\n }\n}\n\nexport function PortWindAPI_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Shared.PortWind.API.PortWindAPI\", [], PortWindAPI, () => [[\"GetSensors\", lambda_type(unit_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(SensorMetaData_$reflection())]))], [\"GetWeather\", lambda_type(SensorId_$reflection(), lambda_type(class_type(\"System.TimeSpan\"), lambda_type(class_type(\"System.TimeSpan\"), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [PortWindWeatherResult_$reflection()]))))], [\"CheckAuthByIP\", lambda_type(unit_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))]]);\n}\n\nexport function PortWindAPI_RouteBuilder(_arg, m) {\n return `/api/portwind/${m}`;\n}\n\n","import { toString, Record } from \"./fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { class_type, anonRecord_type, record_type, string_type } from \"./fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { ProxyRequestException__get_Response, ProxyRequestException__get_StatusCode, ProxyRequestException } from \"./fable_modules/Fable.Remoting.Client.7.32.0/Types.fs.js\";\nimport { ServerError_$reflection, ServerError } from \"./StenaWeather.WeatherServiceUI.Shared/Errors.js\";\nimport { SimpleJson_tryParse } from \"./fable_modules/Fable.SimpleJson.3.24.0/SimpleJson.fs.js\";\nimport { Convert_fromJson } from \"./fable_modules/Fable.SimpleJson.3.24.0/Json.Converter.fs.js\";\nimport { createTypeInfo } from \"./fable_modules/Fable.SimpleJson.3.24.0/TypeInfo.Converter.fs.js\";\nimport { Cmd_OfAsyncWith_either } from \"./fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { awaitPromise, catchAsync, start as start_1 } from \"./fable_modules/fable-library-js.4.19.3/Async.js\";\nimport { singleton } from \"./fable_modules/fable-library-js.4.19.3/AsyncBuilder.js\";\nimport { printf, toText } from \"./fable_modules/fable-library-js.4.19.3/String.js\";\nimport { map, defaultArg, toArray, unwrap, some } from \"./fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpResult$2 } from \"./fable_modules/fable-library-js.4.19.3/Result.js\";\nimport { iterate } from \"./fable_modules/fable-library-js.4.19.3/Seq.js\";\nimport { Oidc_UserManager, Oidc_Log } from \"./fable_modules/Fable.OidcClient.1.0.2/Fable.OidcClient.fs.js\";\nimport { Remoting_buildProxy_64DC51C } from \"./fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js\";\nimport { RemotingModule_createApi, RemotingModule_withRouteBuilder, RemotingModule_withAuthorizationHeader } from \"./fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js\";\nimport { ProfilesAPI_$reflection, ProfilesAPI_RouteBuilder } from \"./StenaWeather.WeatherServiceUI.Shared/Profiles/API.js\";\nimport { ModelsAPI_$reflection, ModelsAPI_RouteBuilder } from \"./StenaWeather.WeatherServiceUI.Shared/Models/API.js\";\nimport { VesselsAPI_$reflection, VesselsAPI_RouteBuilder } from \"./StenaWeather.WeatherServiceUI.Shared/Vessels/API.js\";\nimport { SessionDetailsAPI_$reflection, SessionDetailsAPI_RouteBuilder } from \"./StenaWeather.WeatherServiceUI.Shared/SessionDetails/API.js\";\nimport { DashboardsAPI_$reflection, DashboardsAPI_RouteBuilder } from \"./StenaWeather.WeatherServiceUI.Shared/Dashboards/API.js\";\nimport { PortWindAPI_$reflection, PortWindAPI_RouteBuilder } from \"./StenaWeather.WeatherServiceUI.Shared/PortWind/API.js\";\n\nexport class Config extends Record {\n constructor(baseUrl, tenantId, clientId) {\n super();\n this.baseUrl = baseUrl;\n this.tenantId = tenantId;\n this.clientId = clientId;\n }\n}\n\nexport function Config_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Server.Config\", [], Config, () => [[\"baseUrl\", string_type], [\"tenantId\", string_type], [\"clientId\", string_type]]);\n}\n\nexport function exnToError(e) {\n let matchValue;\n if (e instanceof ProxyRequestException) {\n const ex = e;\n try {\n return ((matchValue = SimpleJson_tryParse(ProxyRequestException__get_Response(ex).ResponseBody), (matchValue != null) ? Convert_fromJson(matchValue, createTypeInfo(anonRecord_type([\"error\", ServerError_$reflection()]))) : (() => {\n throw new Error(\"Couldn\\'t parse the input JSON string because it seems to be invalid\");\n })())).error;\n }\n catch (matchValue_1) {\n return (ProxyRequestException__get_StatusCode(ex) === 401) ? (new ServerError(2, [ProxyRequestException__get_Response(ex).ResponseBody])) : ((ProxyRequestException__get_StatusCode(ex) === 403) ? (new ServerError(3, [ProxyRequestException__get_Response(ex).ResponseBody])) : (new ServerError(0, [e.message])));\n }\n }\n else {\n return new ServerError(0, [e.message]);\n }\n}\n\nexport function Cmd_OfAsync_eitherAsResult(fn, resultMsg) {\n return Cmd_OfAsyncWith_either((a) => {\n start_1(singleton.Delay(() => singleton.Bind(catchAsync(a), (_arg) => {\n if (_arg.tag === 1) {\n console.error(some(toText(printf(\"eitherAsResult: %A\"))(_arg.fields[0])));\n return singleton.Zero();\n }\n else {\n _arg.fields[0];\n return singleton.Zero();\n }\n })));\n }, fn, undefined, (arg) => resultMsg(new FSharpResult$2(0, [arg])), (arg_2) => resultMsg(new FSharpResult$2(1, [exnToError(arg_2)])));\n}\n\nexport const Auth_settings = (() => {\n const endpoint = `https://login.microsoftonline.com/${config.tenantId}/v2.0`;\n const client_id = config.clientId;\n const post_logout_redirect_uri = config.baseUrl;\n const redirect_uri = (config.baseUrl) + \"login-callback\";\n const silent_redirect_uri = (config.baseUrl) + \"login-callback-silent\";\n return {\n authority: endpoint,\n automaticSilentRenew: true,\n client_id: unwrap(client_id),\n filterProtocolClaims: true,\n loadUserInfo: false,\n post_logout_redirect_uri: unwrap(post_logout_redirect_uri),\n redirect_uri: unwrap(redirect_uri),\n response_type: \"code\",\n scope: `api://${config.clientId}/User.Read`,\n silent_redirect_uri: unwrap(silent_redirect_uri),\n };\n})();\n\nexport class Auth_Log {\n constructor() {\n }\n debug(msg, ...pars) {\n iterate((x) => {\n console.debug(toString(x));\n }, toArray(msg));\n }\n error(msg, ...pars) {\n iterate((x) => {\n console.error(some(toString(x)));\n }, toArray(msg));\n }\n info(msg, ...pars) {\n iterate((x) => {\n console.info(some(toString(x)));\n }, toArray(msg));\n }\n warn(msg, ...pars) {\n iterate((x) => {\n console.warn(some(toString(x)));\n }, toArray(msg));\n }\n}\n\nexport function Auth_Log_$reflection() {\n return class_type(\"StenaWeather.WeatherServiceUI.Client.Server.Auth.Log\", undefined, Auth_Log);\n}\n\nexport function Auth_Log_$ctor() {\n return new Auth_Log();\n}\n\nexport const Auth_userManager = (Oidc_Log.logger = Auth_Log_$ctor(), (() => {\n const userManager = new Oidc_UserManager(Auth_settings);\n userManager.events.addAccessTokenExpiring((_arg) => {\n userManager.signinSilent(some({\n scope: unwrap(Auth_settings.scope),\n }));\n });\n return userManager;\n})());\n\nfunction withAuth(builder, fn) {\n return singleton.Delay(() => singleton.Bind(awaitPromise(Auth_userManager.getUser()), (_arg) => {\n const token = defaultArg(map((x) => x.access_token, _arg), \"\");\n return singleton.ReturnFrom(fn(builder(token)));\n }));\n}\n\nexport function onProfilesAPI(fn) {\n return withAuth((token) => Remoting_buildProxy_64DC51C(RemotingModule_withAuthorizationHeader(`Bearer ${token}`, RemotingModule_withRouteBuilder(ProfilesAPI_RouteBuilder, RemotingModule_createApi())), ProfilesAPI_$reflection()), fn);\n}\n\nexport function onModelsAPI(fn) {\n return withAuth((token) => Remoting_buildProxy_64DC51C(RemotingModule_withAuthorizationHeader(`Bearer ${token}`, RemotingModule_withRouteBuilder(ModelsAPI_RouteBuilder, RemotingModule_createApi())), ModelsAPI_$reflection()), fn);\n}\n\nexport function onVesselsAPI(fn) {\n return withAuth((token) => Remoting_buildProxy_64DC51C(RemotingModule_withAuthorizationHeader(`Bearer ${token}`, RemotingModule_withRouteBuilder(VesselsAPI_RouteBuilder, RemotingModule_createApi())), VesselsAPI_$reflection()), fn);\n}\n\nexport function onSessionDetailsAPI(fn) {\n return withAuth((token) => Remoting_buildProxy_64DC51C(RemotingModule_withAuthorizationHeader(`Bearer ${token}`, RemotingModule_withRouteBuilder(SessionDetailsAPI_RouteBuilder, RemotingModule_createApi())), SessionDetailsAPI_$reflection()), fn);\n}\n\nexport function onDashboardsAPI(fn) {\n return withAuth((token) => Remoting_buildProxy_64DC51C(RemotingModule_withAuthorizationHeader(`Bearer ${token}`, RemotingModule_withRouteBuilder(DashboardsAPI_RouteBuilder, RemotingModule_createApi())), DashboardsAPI_$reflection()), fn);\n}\n\nexport function onPortWindAPI(fn) {\n return withAuth((token) => Remoting_buildProxy_64DC51C(RemotingModule_withAuthorizationHeader(`Bearer ${token}`, RemotingModule_withRouteBuilder(PortWindAPI_RouteBuilder, RemotingModule_createApi())), PortWindAPI_$reflection()), fn);\n}\n\n","import { Cmd_batch, Cmd_none } from \"./fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { singleton } from \"./fable_modules/fable-library-js.4.19.3/List.js\";\n\nexport function noCmd(v) {\n return [v, Cmd_none()];\n}\n\nexport function withCmd(cmd, v) {\n return [v, cmd];\n}\n\nexport function withCmds(cmds, v) {\n return [v, Cmd_batch(cmds)];\n}\n\nexport function withCmdOfMsg(msg, v) {\n return [v, singleton((dispatch) => {\n dispatch(msg);\n })];\n}\n\n","export default __webpack_public_path__ + \"972a3e6b3369c25699ded69c183a5c7b.svg\";","import { map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport * as react from \"react\";\nimport { Icon } from \"@stenajs-webui/elements\";\n\nexport function IconModule_View(p) {\n const props = {\n color: map((x) => x, FSharpMap__TryFind(p, \"color\")),\n icon: map((x_1) => x_1, FSharpMap__TryFind(p, \"icon\")),\n size: map((x_2) => x_2, FSharpMap__TryFind(p, \"size\")),\n };\n return react.createElement(Icon, props);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { defaultArg, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { Box } from \"@stenajs-webui/core\";\n\nexport function BoxModule_View(boxModule_ViewInputProps) {\n const p = boxModule_ViewInputProps.p;\n let props;\n const shadow = map((x) => x, FSharpMap__TryFind(p, \"shadow\"));\n const background = map((x_1) => x_1, FSharpMap__TryFind(p, \"background\"));\n const spacing = map((x_2) => x_2, FSharpMap__TryFind(p, \"spacing\"));\n const indent = map((x_3) => x_3, FSharpMap__TryFind(p, \"indent\"));\n props = {\n background: background,\n height: map((x_4) => x_4, FSharpMap__TryFind(p, \"height\")),\n indent: indent,\n shadow: shadow,\n spacing: spacing,\n };\n const children = defaultArg(map((x_5) => x_5, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Box, props, ...children);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { defaultArg, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { SidebarMenuLink, SidebarMenuHeading, SidebarMenuCollapsible } from \"@stenajs-webui/panels\";\n\nexport function SidebarMenuCollapsible_View(sidebarMenuCollapsible_ViewInputProps) {\n const p = sidebarMenuCollapsible_ViewInputProps.p;\n const props = {\n label: map((x) => x, FSharpMap__TryFind(p, \"label\")),\n leftIcon: map((x_1) => x_1, FSharpMap__TryFind(p, \"leftIcon\")),\n };\n const children = defaultArg(map((x_2) => x_2, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(SidebarMenuCollapsible, props, ...children);\n}\n\nexport function SidebarMenuHeading_View(sidebarMenuHeading_ViewInputProps) {\n const p = sidebarMenuHeading_ViewInputProps.p;\n const props = {\n label: map((x) => x, FSharpMap__TryFind(p, \"label\")),\n };\n return react.createElement(SidebarMenuHeading, props);\n}\n\nexport function SidebarMenuLink_View(sidebarMenuLink_ViewInputProps) {\n const p = sidebarMenuLink_ViewInputProps.p;\n let props;\n const label = map((x) => x, FSharpMap__TryFind(p, \"label\"));\n const id = map((x_1) => x_1, FSharpMap__TryFind(p, \"id\"));\n const loading = map((x_2) => x_2, FSharpMap__TryFind(p, \"loading\"));\n const selected = map((x_3) => x_3, FSharpMap__TryFind(p, \"selected\"));\n const indent = map((x_4) => x_4, FSharpMap__TryFind(p, \"indent\"));\n const leftIcon = map((x_5) => x_5, FSharpMap__TryFind(p, \"leftIcon\"));\n props = {\n id: id,\n indent: indent,\n label: label,\n left: map((x_6) => x_6, FSharpMap__TryFind(p, \"left\")),\n leftIcon: leftIcon,\n loading: loading,\n onClick: map((x_7) => x_7, FSharpMap__TryFind(p, \"onClick\")),\n selected: selected,\n };\n return react.createElement(SidebarMenuLink, props);\n}\n\n","import { Union } from \"../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { union_type } from \"../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\n\nexport class ToastPosition extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"TopLeft\", \"TopCenter\", \"TopRight\", \"BottomLeft\", \"BottomCenter\", \"BottomRight\"];\n }\n}\n\nexport function ToastPosition_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Components.HotToast.ToastPosition\", [], ToastPosition, () => [[], [], [], [], [], []]);\n}\n\nexport function ToastPositionModule_value(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"top-center\";\n case 2:\n return \"top-right\";\n case 3:\n return \"bottom-left\";\n case 4:\n return \"bottom-center\";\n case 5:\n return \"bottom-right\";\n default:\n return \"top-left\";\n }\n}\n\n","import { toast } from \"react-hot-toast\";\nimport { defaultArg, unwrap, map } from \"../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { ToastPositionModule_value } from \"./HotToast.js\";\nimport { empty } from \"../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport * as react from \"react\";\n\nexport const ToastModule__customToast = toast.custom;\n\nexport function ToastModule_propsToRecord(p) {\n return {\n duration: map((x) => x, FSharpMap__TryFind(p, \"duration\")),\n position: unwrap(map(ToastPositionModule_value, map((x_1) => x_1, FSharpMap__TryFind(p, \"position\")))),\n };\n}\n\nexport function ToastModule_customToast(p) {\n let xs;\n ToastModule__customToast((xs = defaultArg(map((x) => x, FSharpMap__TryFind(p, \"children\")), empty()), react.createElement(react.Fragment, {}, ...xs)), ToastModule_propsToRecord(p));\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { map, unwrap } from \"../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { ToastPositionModule_value } from \"./HotToast.js\";\nimport { ofList, FSharpMap__TryFind } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { ToastModule_propsToRecord } from \"./Toast.js\";\nimport { map as map_1 } from \"../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { comparePrimitives } from \"../../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { Toaster } from \"react-hot-toast\";\n\nexport function ToasterModule_View(toasterModule_ViewInputProps) {\n const p = toasterModule_ViewInputProps.p;\n const props = {\n position: unwrap(map(ToastPositionModule_value, map((x) => x, FSharpMap__TryFind(p, \"position\")))),\n reverseOrder: map((x_1) => x_1, FSharpMap__TryFind(p, \"reverseOrder\")),\n toastOptions: unwrap(map((arg) => ToastModule_propsToRecord(ofList(map_1((value) => value, arg), {\n Compare: comparePrimitives,\n })), map((x_2) => x_2, FSharpMap__TryFind(p, \"toastOptions\")))),\n };\n return react.createElement(Toaster, props);\n}\n\n","// extracted by mini-css-extract-plugin\nexport default {\"timezone-display\":\"lSMT_uKwjA6Lhi8XKMex\",\"time-display\":\"zvDx1WtQp1AtCU6jxeYR\",\"offset-display\":\"ByH_pgoKbyR6UgIZZofy\",\"date-display\":\"_dxV4rFZizkzk7tnbrXx\",\"offset-switch\":\"vhbC1AatBnjCKLGil6jj\",\"offset-setting-button\":\"Kaxtz20X77lVNG2yyVgg\",\"timezone-settings-form\":\"nP0AfmwH0kEVVpYa1lH2\",\"offset-settings\":\"bZCOR31NIbgdPB7uVlsJ\"};","import { Record } from \"../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { lambda_type, unit_type, record_type, bool_type, class_type } from \"../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { createContext } from \"../../fable_modules/Feliz.2.8.0/Internal.fs.js\";\nimport React from \"react\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.8.0/Interop.fs.js\";\n\nexport class DateTimeSettings extends Record {\n constructor(TimeZoneOffset, UseLocalTime) {\n super();\n this.TimeZoneOffset = TimeZoneOffset;\n this.UseLocalTime = UseLocalTime;\n }\n}\n\nexport function DateTimeSettings_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Components.TimeZones.Context.DateTimeSettings\", [], DateTimeSettings, () => [[\"TimeZoneOffset\", class_type(\"System.TimeSpan\")], [\"UseLocalTime\", bool_type]]);\n}\n\nexport class TimezoneContext extends Record {\n constructor(Settings, SetSettings) {\n super();\n this.Settings = Settings;\n this.SetSettings = SetSettings;\n }\n}\n\nexport function TimezoneContext_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Components.TimeZones.Context.TimezoneContext\", [], TimezoneContext, () => [[\"Settings\", DateTimeSettings_$reflection()], [\"SetSettings\", lambda_type(DateTimeSettings_$reflection(), unit_type)]]);\n}\n\nexport const dateTimeSettings = new DateTimeSettings(0, false);\n\nexport const defaultContext = new TimezoneContext(dateTimeSettings, (_arg) => {\n});\n\nexport const timeZoneContext = createContext(\"TimeZoneContext\", defaultContext);\n\nexport function TimeZoneContext(timeZoneContextInputProps) {\n const children = timeZoneContextInputProps.children;\n const ctx = timeZoneContextInputProps.ctx;\n return reactApi.createElement(timeZoneContext.Provider, {\n value: ctx,\n }, children);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { NumericTextInput } from \"@stenajs-webui/forms\";\n\nexport function NumericTextInputModule_View(numericTextInputModule_ViewInputProps) {\n const p = numericTextInputModule_ViewInputProps.p;\n let props;\n const id = map((x) => x, FSharpMap__TryFind(p, \"id\"));\n const value = map((x_1) => x_1, FSharpMap__TryFind(p, \"value\"));\n const min = map((x_2) => x_2, FSharpMap__TryFind(p, \"min\"));\n const max = map((x_3) => x_3, FSharpMap__TryFind(p, \"max\"));\n props = {\n contentRight: map((x_4) => x_4, FSharpMap__TryFind(p, \"contentRight\")),\n hideButtons: map((x_5) => x_5, FSharpMap__TryFind(p, \"hideButtons\")),\n id: id,\n max: max,\n min: min,\n onValueChange: map((x_6) => x_6, FSharpMap__TryFind(p, \"onValueChange\")),\n value: value,\n };\n return react.createElement(NumericTextInput, props);\n}\n\n","import { Union } from \"../../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { union_type } from \"../../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport React from \"react\";\nimport * as react from \"react\";\nimport { unwrap, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { FlatButton, SecondaryButton, PrimaryButton } from \"@stenajs-webui/elements\";\n\nexport class ButtonVariant extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Normal\", \"Danger\", \"Success\"];\n }\n}\n\nexport function ButtonVariant_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Elements.ButtonVariant\", [], ButtonVariant, () => [[], [], []]);\n}\n\nexport function ButtonVariantModule_value(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"danger\";\n case 2:\n return \"success\";\n default:\n return \"normal\";\n }\n}\n\nexport class ButtonSize extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Large\", \"Medium\", \"Small\"];\n }\n}\n\nexport function ButtonSize_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Elements.ButtonSize\", [], ButtonSize, () => [[], [], []]);\n}\n\nexport function ButtonSizeModule_value(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"medium\";\n case 2:\n return \"small\";\n default:\n return \"large\";\n }\n}\n\nexport function ButtonBase_ViewPrimary(buttonBase_ViewPrimaryInputProps) {\n const p = buttonBase_ViewPrimaryInputProps.p;\n let props;\n const id = map((x) => x, FSharpMap__TryFind(p, \"id\"));\n const label = map((x_1) => x_1, FSharpMap__TryFind(p, \"label\"));\n const loadingLabel = map((x_2) => x_2, FSharpMap__TryFind(p, \"loadingLabel\"));\n const loading = map((x_3) => x_3, FSharpMap__TryFind(p, \"loading\"));\n const success = map((x_4) => x_4, FSharpMap__TryFind(p, \"success\"));\n const successLabel = map((x_5) => x_5, FSharpMap__TryFind(p, \"successLabel\"));\n const leftIcon = map((x_6) => x_6, FSharpMap__TryFind(p, \"leftIcon\"));\n const left = map((x_7) => x_7, FSharpMap__TryFind(p, \"left\"));\n const rightIcon = map((x_8) => x_8, FSharpMap__TryFind(p, \"rightIcon\"));\n const right = map((x_9) => x_9, FSharpMap__TryFind(p, \"right\"));\n const size = map(ButtonSizeModule_value, map((x_10) => x_10, FSharpMap__TryFind(p, \"size\")));\n const variant = map(ButtonVariantModule_value, map((x_11) => x_11, FSharpMap__TryFind(p, \"variant\")));\n const onClick = map((x_12) => x_12, FSharpMap__TryFind(p, \"onClick\"));\n props = {\n disabled: map((x_13) => x_13, FSharpMap__TryFind(p, \"disabled\")),\n id: id,\n label: label,\n left: left,\n leftIcon: leftIcon,\n loading: loading,\n loadingLabel: loadingLabel,\n onClick: onClick,\n right: right,\n rightIcon: rightIcon,\n size: unwrap(size),\n success: success,\n successLabel: successLabel,\n variant: unwrap(variant),\n };\n return react.createElement(PrimaryButton, props);\n}\n\nexport function ButtonBase_ViewSecondary(p) {\n let props;\n const id = map((x) => x, FSharpMap__TryFind(p, \"id\"));\n const label = map((x_1) => x_1, FSharpMap__TryFind(p, \"label\"));\n const loadingLabel = map((x_2) => x_2, FSharpMap__TryFind(p, \"loadingLabel\"));\n const loading = map((x_3) => x_3, FSharpMap__TryFind(p, \"loading\"));\n const success = map((x_4) => x_4, FSharpMap__TryFind(p, \"success\"));\n const successLabel = map((x_5) => x_5, FSharpMap__TryFind(p, \"successLabel\"));\n const leftIcon = map((x_6) => x_6, FSharpMap__TryFind(p, \"leftIcon\"));\n const left = map((x_7) => x_7, FSharpMap__TryFind(p, \"left\"));\n const rightIcon = map((x_8) => x_8, FSharpMap__TryFind(p, \"rightIcon\"));\n const right = map((x_9) => x_9, FSharpMap__TryFind(p, \"right\"));\n const size = map(ButtonSizeModule_value, map((x_10) => x_10, FSharpMap__TryFind(p, \"size\")));\n const variant = map(ButtonVariantModule_value, map((x_11) => x_11, FSharpMap__TryFind(p, \"variant\")));\n props = {\n id: id,\n label: label,\n left: left,\n leftIcon: leftIcon,\n loading: loading,\n loadingLabel: loadingLabel,\n onClick: map((x_12) => x_12, FSharpMap__TryFind(p, \"onClick\")),\n right: right,\n rightIcon: rightIcon,\n size: unwrap(size),\n success: success,\n successLabel: successLabel,\n variant: unwrap(variant),\n };\n return react.createElement(SecondaryButton, props);\n}\n\nexport function ButtonBase_ViewFlat(p) {\n let props;\n const id = map((x) => x, FSharpMap__TryFind(p, \"id\"));\n const label = map((x_1) => x_1, FSharpMap__TryFind(p, \"label\"));\n const loadingLabel = map((x_2) => x_2, FSharpMap__TryFind(p, \"loadingLabel\"));\n const loading = map((x_3) => x_3, FSharpMap__TryFind(p, \"loading\"));\n const success = map((x_4) => x_4, FSharpMap__TryFind(p, \"success\"));\n const successLabel = map((x_5) => x_5, FSharpMap__TryFind(p, \"successLabel\"));\n const leftIcon = map((x_6) => x_6, FSharpMap__TryFind(p, \"leftIcon\"));\n const left = map((x_7) => x_7, FSharpMap__TryFind(p, \"left\"));\n const rightIcon = map((x_8) => x_8, FSharpMap__TryFind(p, \"rightIcon\"));\n const right = map((x_9) => x_9, FSharpMap__TryFind(p, \"right\"));\n const size = map(ButtonSizeModule_value, map((x_10) => x_10, FSharpMap__TryFind(p, \"size\")));\n const variant = map(ButtonVariantModule_value, map((x_11) => x_11, FSharpMap__TryFind(p, \"variant\")));\n const onClick = map((x_12) => x_12, FSharpMap__TryFind(p, \"onClick\"));\n const inverted = map((x_13) => x_13, FSharpMap__TryFind(p, \"inverted\"));\n props = {\n disabled: map((x_14) => x_14, FSharpMap__TryFind(p, \"disabled\")),\n id: id,\n inverted: inverted,\n label: label,\n left: left,\n leftIcon: leftIcon,\n loading: loading,\n loadingLabel: loadingLabel,\n onClick: onClick,\n right: right,\n rightIcon: rightIcon,\n size: unwrap(size),\n success: success,\n successLabel: successLabel,\n variant: unwrap(variant),\n };\n return react.createElement(FlatButton, props);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { Switch } from \"@stenajs-webui/forms\";\n\nexport function SwitchModule_View(switchModule_ViewInputProps) {\n const p = switchModule_ViewInputProps.p;\n let props;\n const value = map((x) => x, FSharpMap__TryFind(p, \"value\"));\n props = {\n onValueChange: map((x_1) => x_1, FSharpMap__TryFind(p, \"onValueChange\")),\n value: value,\n };\n return react.createElement(Switch, props);\n}\n\n","import { defaultArg, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport * as react from \"react\";\nimport { Modal } from \"@stenajs-webui/modal\";\n\nexport function ModalModule_view(p) {\n let props;\n const isOpen = map((x) => x, FSharpMap__TryFind(p, \"isOpen\"));\n const headerText = map((x_1) => x_1, FSharpMap__TryFind(p, \"headerText\"));\n const width = map((x_2) => x_2, FSharpMap__TryFind(p, \"width\"));\n props = {\n headerText: headerText,\n isOpen: isOpen,\n onRequestClose: map((x_3) => x_3, FSharpMap__TryFind(p, \"onRequestClose\")),\n width: width,\n };\n const children = defaultArg(map((x_4) => x_4, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Modal, props, ...children);\n}\n\n","import Components$002Emodule from \"../../../src/StenaWeather.WeatherServiceUI.Client/Components/TimeZones/Components.module.css\";\nimport { singleton, ofArray, map } from \"../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { interpolate, toText, join } from \"../../fable_modules/fable-library-js.4.19.3/String.js\";\nimport { toString } from \"../../fable_modules/fable-library-js.4.19.3/Date.js\";\nimport { utcNow, now, offset, toOffset } from \"../../fable_modules/fable-library-js.4.19.3/DateOffset.js\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.8.0/Interop.fs.js\";\nimport { DateTimeSettings, timeZoneContext } from \"./Context.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport * as react from \"react\";\nimport { fromMinutes, fromHours, minutes as minutes_2, totalHours } from \"../../fable_modules/fable-library-js.4.19.3/TimeSpan.js\";\nimport { ofList } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { comparePrimitives, int32ToString } from \"../../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { parse } from \"../../fable_modules/fable-library-js.4.19.3/Int32.js\";\nimport { NumericTextInputModule_View } from \"../StenaWebUI/Forms/NumericTextInput.js\";\nimport { ButtonBase_ViewFlat, ButtonBase_ViewPrimary, ButtonBase_ViewSecondary } from \"../StenaWebUI/Elements/Button.js\";\nimport { useEffectWithDeps } from \"../../fable_modules/Feliz.2.8.0/ReactInterop.js\";\nimport { createDisposable } from \"../../fable_modules/Feliz.2.8.0/Internal.fs.js\";\nimport { SwitchModule_View } from \"../StenaWebUI/Forms/Switch.js\";\nimport { ModalModule_view } from \"../StenaWebUI/Modal/Modal.js\";\n\nexport const cn = (() => {\n const styles = Components$002Emodule;\n const cnFn = (name) => (styles[name]);\n const cnFns = (names) => map((x) => (styles[x]), names);\n return {\n className: cnFn,\n classes: cnFns,\n prop: {\n className: (arg) => [\"className\", cnFn(arg)],\n classes: (arg_1) => [\"className\", join(\" \", cnFns(arg_1))],\n },\n };\n})();\n\nexport function DateTimeOffset_dateStr(d) {\n return toString(d, \"yyyy-MM-dd\");\n}\n\nexport function DateTimeOffset_timeStr(d) {\n return toString(d, \"HH:mm\");\n}\n\nexport function DateTimeOffset_dateTimeStr(d) {\n return (DateTimeOffset_dateStr(d) + \" \") + DateTimeOffset_timeStr(d);\n}\n\nexport function DateTimeOffset_adjustFromContext(ctx, dateTime) {\n if (ctx.Settings.UseLocalTime) {\n return toOffset(dateTime, ctx.Settings.TimeZoneOffset);\n }\n else {\n return toOffset(dateTime, 0);\n }\n}\n\nexport function DateTimeOffset_dateTimeWithTimezone(d) {\n return DateTimeOffset_adjustFromContext(reactApi.useContext(timeZoneContext), d);\n}\n\nexport function DateTimeOffset_DateWithTimezone(dateTimeOffset_DateWithTimezoneInputProps) {\n const dateTime = dateTimeOffset_DateWithTimezoneInputProps.dateTime;\n return DateTimeOffset_dateStr(DateTimeOffset_adjustFromContext(reactApi.useContext(timeZoneContext), dateTime));\n}\n\nexport function DateTimeOffset_TimeWithTimezone(dateTimeOffset_TimeWithTimezoneInputProps) {\n const dateTime = dateTimeOffset_TimeWithTimezoneInputProps.dateTime;\n return DateTimeOffset_timeStr(DateTimeOffset_adjustFromContext(reactApi.useContext(timeZoneContext), dateTime));\n}\n\nexport function DateTimeOffset_DateTimeWithTimezone(dateTimeOffset_DateTimeWithTimezoneInputProps) {\n const dateTime = dateTimeOffset_DateTimeWithTimezoneInputProps.dateTime;\n return DateTimeOffset_dateTimeStr(DateTimeOffset_adjustFromContext(reactApi.useContext(timeZoneContext), dateTime));\n}\n\nexport function TimezoneSettingsForm(timezoneSettingsFormInputProps) {\n let elm_2, p_1_1, p_1_2, p_1_4;\n const closeModal = timezoneSettingsFormInputProps.closeModal;\n const ctx = reactApi.useContext(timeZoneContext);\n let patternInput;\n const initial = ~~totalHours(ctx.Settings.TimeZoneOffset) | 0;\n patternInput = reactApi.useState(initial);\n const setHoursState = patternInput[1];\n const hours = patternInput[0] | 0;\n let patternInput_1;\n const initial_1 = minutes_2(ctx.Settings.TimeZoneOffset) | 0;\n patternInput_1 = reactApi.useState(initial_1);\n const setMinutesState = patternInput_1[1];\n const minutes = patternInput_1[0] | 0;\n const elm = ofArray([(elm_2 = ofArray([(p_1_1 = ofList(map((value_15) => value_15, ofArray([[\"value\", int32ToString(hours)], [\"max\", 14], [\"min\", -14], [\"onValueChange\", (arg) => {\n const hours_1 = parse(arg, 511, false, 32) | 0;\n setHoursState(hours_1);\n if (Math.abs(hours_1) >= 14) {\n setMinutesState(0);\n }\n if ((hours_1 !== 0) && (minutes < 0)) {\n setMinutesState(Math.abs(minutes));\n }\n }]])), {\n Compare: comparePrimitives,\n }), createElement(NumericTextInputModule_View, {\n p: p_1_1,\n })), \":\", (p_1_2 = ofList(map((value_19) => value_19, ofArray([[\"value\", int32ToString(minutes)], [\"max\", 59], [\"min\", (hours === 0) ? -59 : 0], [\"onValueChange\", (arg_1) => {\n const minutes_1 = parse(arg_1, 511, false, 32) | 0;\n if (Math.abs(hours) >= 14) {\n setMinutesState(0);\n }\n else {\n setMinutesState(minutes_1);\n }\n }]])), {\n Compare: comparePrimitives,\n }), createElement(NumericTextInputModule_View, {\n p: p_1_2,\n }))]), createElement(\"div\", {\n className: cn.className(\"offset-settings\"),\n children: reactApi.Children.toArray(Array.from(elm_2)),\n })), ButtonBase_ViewSecondary(ofList(map((value_20) => value_20, ofArray([[\"onClick\", () => {\n const nowOffset = offset(now());\n setHoursState(~~totalHours(nowOffset));\n setMinutesState(minutes_2(nowOffset));\n }], [\"label\", \"Set local offset\"]])), {\n Compare: comparePrimitives,\n })), (p_1_4 = ofList(map((value_21) => value_21, ofArray([[\"label\", \"Save\"], [\"onClick\", () => {\n ctx.SetSettings(new DateTimeSettings((hours < 0) ? (fromHours(hours) - fromMinutes(minutes)) : (fromHours(hours) + fromMinutes(minutes)), ctx.Settings.UseLocalTime));\n return closeModal();\n }]])), {\n Compare: comparePrimitives,\n }), createElement(ButtonBase_ViewPrimary, {\n p: p_1_4,\n }))]);\n return createElement(\"div\", {\n className: cn.className(\"timezone-settings-form\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n}\n\nexport function CurrentSettingsDisplay() {\n let value, value_2, p_1_1, elm;\n const ctx = reactApi.useContext(timeZoneContext);\n let patternInput;\n const initial = utcNow();\n patternInput = reactApi.useState(initial);\n const currentTime = patternInput[0];\n const patternInput_1 = reactApi.useState(false);\n const setModalVisible = patternInput_1[1];\n const modalVisible = patternInput_1[0];\n useEffectWithDeps(() => {\n const interval = window.setInterval(() => {\n patternInput[1](utcNow());\n }, 500);\n return createDisposable(() => {\n window.clearInterval(interval);\n });\n }, []);\n const hoursOffset = toText(interpolate(\"%02d%P()\", [~~((value = totalHours(ctx.Settings.TimeZoneOffset), Math.abs(value)))]));\n const minutesOffset = toText(interpolate(\"%02d%P()\", [(value_2 = (minutes_2(ctx.Settings.TimeZoneOffset) | 0), Math.abs(value_2))]));\n const displayValue = (ctx.Settings.TimeZoneOffset >= 0) ? (`UTC +${hoursOffset}:${minutesOffset}`) : (`UTC -${hoursOffset}:${minutesOffset}`);\n let switch$;\n const xs_2 = [createElement(\"span\", {\n children: \"UTC\",\n }), (p_1_1 = ofList(map((value_6) => value_6, ofArray([[\"value\", ctx.Settings.UseLocalTime], [\"onValueChange\", (_arg) => {\n ctx.SetSettings(new DateTimeSettings(ctx.Settings.TimeZoneOffset, !ctx.Settings.UseLocalTime));\n }]])), {\n Compare: comparePrimitives,\n }), createElement(SwitchModule_View, {\n p: p_1_1,\n })), createElement(\"span\", {\n children: \"Local\",\n })];\n switch$ = react.createElement(react.Fragment, {}, ...xs_2);\n const toggleModal = () => {\n setModalVisible(!modalVisible);\n };\n const settingsButton = ButtonBase_ViewFlat(ofList(map((value_10) => value_10, ofArray([[\"label\", \"Settings\"], [\"onClick\", toggleModal], [\"inverted\", true]])), {\n Compare: comparePrimitives,\n }));\n const xs_10 = [(elm = ofArray([createElement(\"div\", {\n className: cn.className(\"time-display\"),\n children: createElement(DateTimeOffset_TimeWithTimezone, {\n dateTime: currentTime,\n }),\n }), createElement(\"div\", {\n className: cn.className(\"date-display\"),\n children: createElement(DateTimeOffset_DateWithTimezone, {\n dateTime: currentTime,\n }),\n }), createElement(\"div\", {\n className: cn.className(\"offset-display\"),\n children: displayValue,\n }), createElement(\"div\", {\n className: cn.className(\"offset-switch\"),\n children: switch$,\n }), createElement(\"div\", {\n className: cn.className(\"offset-setting-button\"),\n children: settingsButton,\n })]), createElement(\"div\", {\n className: cn.className(\"timezone-display\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n })), ModalModule_view(ofList(map((value_35) => value_35, ofArray([[\"isOpen\", modalVisible], [\"headerText\", \"Timezone Settings\"], [\"onRequestClose\", toggleModal], [\"width\", \"300px\"], [\"children\", singleton(createElement(TimezoneSettingsForm, {\n closeModal: () => {\n setModalVisible(false);\n },\n }))]])), {\n Compare: comparePrimitives,\n }))];\n return react.createElement(react.Fragment, {}, ...xs_10);\n}\n\n","export const faCustomCurrentIcon = {\n prefix: \"custom\",\n iconName: \"current-icon\",\n //transform: \"translate(0.000000,50.000000) scale(0.100000,-0.100000)\",\n icon: [\n 400,\n 295,\n [],\n \"f0000\",\n \"M88.355 76.236 C 68.236 115.672,78.819 128.397,100.779 91.176 C 115.901 65.547,118.947 65.547,131.168 91.176 C 138.572 106.701,144.650 111.765,155.882 111.765 C 167.115 111.765,173.193 106.701,180.596 91.176 C 185.996 79.853,192.536 70.588,195.128 70.588 C 197.721 70.588,203.713 79.853,208.444 91.176 C 220.535 120.113,243.268 120.113,257.067 91.176 C 262.467 79.853,268.780 70.588,271.097 70.588 C 273.413 70.588,280.775 79.853,287.456 91.176 C 309.268 128.146,319.092 117.376,299.863 77.575 C 284.054 44.856,263.274 43.209,248.815 73.529 C 243.416 84.853,237.102 94.118,234.786 94.118 C 232.469 94.118,225.108 84.853,218.426 73.529 C 202.454 46.457,185.782 46.457,169.809 73.529 C 163.128 84.853,155.766 94.118,153.450 94.118 C 151.133 94.118,144.820 84.853,139.420 73.529 C 125.250 43.815,104.329 44.924,88.355 76.236 M255.983 146.896 C 253.676 150.629,256.019 158.356,261.188 164.069 C 277.044 181.589,273.506 182.353,176.471 182.353 C 117.647 182.353,82.353 184.559,82.353 188.235 C 82.353 191.912,117.647 194.118,176.471 194.118 C 273.993 194.118,277.106 194.812,260.727 212.911 C 239.753 236.088,262.029 234.327,287.162 210.821 C 301.131 197.758,311.678 186.670,310.601 186.182 C 309.524 185.693,297.738 175.128,284.410 162.702 C 268.316 147.699,258.768 142.390,255.983 146.896\"\n ]\n};","import { FSharpResult$2 } from \"../../fable_modules/fable-library-js.4.19.3/Result.js\";\nimport { SimpleJson_tryParse } from \"../../fable_modules/Fable.SimpleJson.3.24.0/SimpleJson.fs.js\";\nimport { Convert_serialize, Convert_fromJson } from \"../../fable_modules/Fable.SimpleJson.3.24.0/Json.Converter.fs.js\";\nimport { createTypeInfo } from \"../../fable_modules/Fable.SimpleJson.3.24.0/TypeInfo.Converter.fs.js\";\nimport { DateTimeSettings, DateTimeSettings_$reflection } from \"./Context.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { now, offset } from \"../../fable_modules/fable-library-js.4.19.3/DateOffset.js\";\n\nfunction tryParseTimespan(timeSpanString) {\n let matchValue;\n let input_3;\n try {\n input_3 = (new FSharpResult$2(0, [(matchValue = SimpleJson_tryParse(timeSpanString), (matchValue != null) ? Convert_fromJson(matchValue, createTypeInfo(DateTimeSettings_$reflection())) : (() => {\n throw new Error(\"Couldn\\'t parse the input JSON string because it seems to be invalid\");\n })())]));\n }\n catch (ex) {\n input_3 = (new FSharpResult$2(1, [ex.message]));\n }\n if (input_3.tag === 1) {\n return new FSharpResult$2(1, [\"Invalid timespan\"]);\n }\n else {\n return new FSharpResult$2(0, [input_3.fields[0]]);\n }\n}\n\nexport function tryGetFromStorage() {\n let input_3;\n let input_1;\n const value_1 = localStorage.getItem(\"weatherservice.userTimezoneSettings.v2\");\n input_1 = ((value_1 === defaultOf()) ? (new FSharpResult$2(1, [\"No user timezone settings found in storage\"])) : (new FSharpResult$2(0, [value_1])));\n input_3 = ((input_1.tag === 1) ? (new FSharpResult$2(1, [input_1.fields[0]])) : tryParseTimespan(input_1.fields[0]));\n if (input_3.tag === 1) {\n return undefined;\n }\n else {\n return input_3.fields[0];\n }\n}\n\nexport function saveToStorage(ctx) {\n localStorage.setItem(\"weatherservice.userTimezoneSettings.v2\", Convert_serialize(ctx, createTypeInfo(DateTimeSettings_$reflection())));\n}\n\nexport function getDefaultUserSettings() {\n return new DateTimeSettings(offset(now()), true);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { Banner as Banner_1 } from \"@stenajs-webui/elements\";\nimport { class_type } from \"../../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\n\nexport function BannerModule_View(bannerModule_ViewInputProps) {\n const p = bannerModule_ViewInputProps.p;\n let props;\n const icon = map((x) => x, FSharpMap__TryFind(p, \"icon\"));\n const headerText = map((x_1) => x_1, FSharpMap__TryFind(p, \"headerText\"));\n const text = map((x_2) => x_2, FSharpMap__TryFind(p, \"text\"));\n const loading = map((x_3) => x_3, FSharpMap__TryFind(p, \"loading\"));\n props = {\n contentRight: map((x_4) => x_4, FSharpMap__TryFind(p, \"contentRight\")),\n headerText: headerText,\n icon: icon,\n loading: loading,\n text: text,\n variant: map((x_5) => x_5, FSharpMap__TryFind(p, \"variant\")),\n };\n return react.createElement(Banner_1, props);\n}\n\nexport class Banner {\n constructor() {\n }\n}\n\nexport function Banner_$reflection() {\n return class_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Elements.Banner\", undefined, Banner);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { map, defaultArg } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { Heading } from \"@stenajs-webui/core\";\n\nexport function HeadingModule_View(headingModule_ViewInputProps) {\n const p = headingModule_ViewInputProps.p;\n const props = {\n variant: defaultArg(map((x) => x, FSharpMap__TryFind(p, \"variant\")), \"h1\"),\n };\n const children = defaultArg(map((x_1) => x_1, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Heading, props, ...children);\n}\n\n","import { ofList } from \"./fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { singleton, ofArray, map } from \"./fable_modules/fable-library-js.4.19.3/List.js\";\nimport { ServerErrorModule_text, ServerErrorModule_title } from \"./StenaWeather.WeatherServiceUI.Shared/Errors.js\";\nimport { comparePrimitives } from \"./fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { createElement } from \"react\";\nimport { BannerModule_View } from \"./Components/StenaWebUI/Elements/Banner.js\";\nimport { Cmd_ofEffect } from \"./fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { ToastModule_customToast } from \"./Components/HotToast/Toast.js\";\nimport { HeadingModule_View } from \"./Components/StenaWebUI/Core/Heading.js\";\nimport { reactApi } from \"./fable_modules/Feliz.2.8.0/Interop.fs.js\";\n\nexport function ErrorView_serverErrorToast(e) {\n const p_1_1 = ofList(map((value) => value, ofArray([[\"variant\", \"error\"], [\"headerText\", ServerErrorModule_title(e)], [\"text\", ServerErrorModule_text(e)]])), {\n Compare: comparePrimitives,\n });\n return createElement(BannerModule_View, {\n p: p_1_1,\n });\n}\n\nexport function ErrorView_errorToast(e) {\n const p_1_1 = ofList(map((value) => value, ofArray([[\"variant\", \"error\"], [\"text\", e]])), {\n Compare: comparePrimitives,\n });\n return createElement(BannerModule_View, {\n p: p_1_1,\n });\n}\n\nexport function ErrorView_Cmd_ofError(e) {\n return Cmd_ofEffect((_arg) => {\n ToastModule_customToast(ofList(map((value_2) => value_2, singleton([\"children\", singleton(ErrorView_serverErrorToast(e))])), {\n Compare: comparePrimitives,\n }));\n });\n}\n\nexport function ErrorView_Cmd_error(e) {\n return Cmd_ofEffect((_arg) => {\n ToastModule_customToast(ofList(map((value_2) => value_2, singleton([\"children\", singleton(ErrorView_errorToast(e))])), {\n Compare: comparePrimitives,\n }));\n });\n}\n\nexport function PageTitle_titleWith(mkText, t, s) {\n let p_1_1, p_1_2;\n const children = ofArray([(p_1_1 = ofList(map((value) => value, ofArray([[\"variant\", \"h1\"], [\"children\", singleton(mkText(t))]])), {\n Compare: comparePrimitives,\n }), createElement(HeadingModule_View, {\n p: p_1_1,\n })), (p_1_2 = ofList(map((value_1) => value_1, ofArray([[\"variant\", \"h3\"], [\"children\", singleton(mkText(s))]])), {\n Compare: comparePrimitives,\n }), createElement(HeadingModule_View, {\n p: p_1_2,\n }))]);\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nexport function PageTitle_title(t, s) {\n return PageTitle_titleWith((value) => value, t, s);\n}\n\n","\nexport function Point_toPosition(p) {\n return {\n lat: p.Latitude,\n lng: p.Longitude,\n };\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { map } from \"../../fable_modules/fable-library-js.4.19.3/Array.js\";\nimport { Point_toPosition } from \"./Shared.js\";\nimport { empty, toArray } from \"../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { map as map_1, defaultArg } from \"../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { Polygon } from \"react-leaflet\";\n\nexport function Polygon_View(polygon_ViewInputProps) {\n const p = polygon_ViewInputProps.p;\n let props;\n const positions = map(Point_toPosition, toArray(defaultArg(map_1((x) => x, FSharpMap__TryFind(p, \"points\")), empty())));\n props = {\n pathOptions: {\n color: map_1((x_1) => x_1, FSharpMap__TryFind(p, \"color\")),\n fill: map_1((x_2) => x_2, FSharpMap__TryFind(p, \"fill\")),\n fillOpacity: map_1((x_3) => x_3, FSharpMap__TryFind(p, \"fillOpacity\")),\n },\n positions: positions,\n };\n return react.createElement(Polygon, props);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { defaultArg, map, defaultArgWith } from \"../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { map as map_1 } from \"../../fable_modules/fable-library-js.4.19.3/Array.js\";\nimport { Point_toPosition } from \"./Shared.js\";\nimport { empty } from \"../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { Rectangle } from \"react-leaflet\";\n\nexport function Rectangle_View(rectangle_ViewInputProps) {\n let color, weight;\n const p = rectangle_ViewInputProps.p;\n const bounds = defaultArgWith(map((x) => x, FSharpMap__TryFind(p, \"bounds\")), () => {\n throw new Error(\"Bounds needs to be setup for Rectangle\");\n });\n const props = {\n bounds: map_1(Point_toPosition, [bounds[0], bounds[1]]),\n pathOptions: (color = map((x_1) => x_1, FSharpMap__TryFind(p, \"color\")), (weight = (defaultArg(map((x_2) => x_2, FSharpMap__TryFind(p, \"weight\")), 3) | 0), {\n color: color,\n fillOpacity: defaultArg(map((x_3) => x_3, FSharpMap__TryFind(p, \"fillOpacity\")), 0.25),\n weight: weight,\n })),\n };\n const children = defaultArg(map((x_4) => x_4, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Rectangle, props, ...children);\n}\n\n","// extracted by mini-css-extract-plugin\nexport default {\"legend-item\":\"O9hyef0DnYJ8cuHdYYDr\",\"models\":\"zlHIOuokKrpoTuEcFVzZ\",\"cell\":\"hMPtB0G9GBXAe0BOFfBF\",\"models-content\":\"CS6s16mYWATcOd779uwc\",\"heading-wrapper\":\"fjUZ4Xp8DD9nsgBDMw5b\",\"supplier\":\"QxI4J3H6qdZaWPwFwPe9\",\"fullName\":\"dVUTnbo1oIOHfnrFIizg\",\"spatialresolution\":\"udbpm_tygzQfdWYAvaJb\",\"priority-cell\":\"n9F7G7xf5uPEeB866eq8\",\"heading-warning\":\"dD6V2uw6q2hNK5L5Kai9\",\"status\":\"kAQthe9gVFnYcnxXXNsX\",\"switch-box\":\"KqHAN5erI2CoR3zF0eSU\",\"table\":\"I3KKjbAKE87G6l9QdyyV\",\"available-models\":\"HX8wXRGBK1XTkQ9bxxhP\",\"map\":\"N79FZh0cNxdEznPBphXD\"};","import { Union } from \"../../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { union_type } from \"../../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { defaultArg, unwrap, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport * as react from \"react\";\nimport { Text as Text$ } from \"@stenajs-webui/core\";\n\nexport class TextVariant extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Standard\", \"Caption\", \"Overline\", \"Bold\"];\n }\n}\n\nexport function TextVariant_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Core.TextVariant\", [], TextVariant, () => [[], [], [], []]);\n}\n\nexport function TextVariantModule_value(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"caption\";\n case 2:\n return \"overline\";\n case 3:\n return \"bold\";\n default:\n return \"standard\";\n }\n}\n\nexport class TextSize extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Large\", \"Medium\", \"Small\", \"Smaller\"];\n }\n}\n\nexport function TextSize_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Core.TextSize\", [], TextSize, () => [[], [], [], []]);\n}\n\nexport function TextSizeModule_value(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"medium\";\n case 2:\n return \"small\";\n case 3:\n return \"smaller\";\n default:\n return \"large\";\n }\n}\n\nexport class UserSelectType extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"MozInitial\", \"Inherit\", \"Initial\", \"Revert\", \"Unset\", \"Auto\", \"Text\", \"NoneValue\", \"MozNone\", \"All\", \"Contain\", \"Element\"];\n }\n}\n\nexport function UserSelectType_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Core.UserSelectType\", [], UserSelectType, () => [[], [], [], [], [], [], [], [], [], [], [], []]);\n}\n\nexport function UserSelectTypeModule_value(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"inherit\";\n case 2:\n return \"initial\";\n case 3:\n return \"revert\";\n case 4:\n return \"unset\";\n case 5:\n return \"auto\";\n case 6:\n return \"text\";\n case 7:\n return \"none\";\n case 8:\n return \"-moz-none\";\n case 9:\n return \"all\";\n case 10:\n return \"contain\";\n case 11:\n return \"element\";\n default:\n return \"-moz-initial\";\n }\n}\n\nexport class WhiteSpaceType extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"MozInitial\", \"Inherit\", \"Initial\", \"Revert\", \"Unset\", \"Pre\", \"Normal\", \"BreakSpaces\", \"MozPreWrap\", \"NoWrap\", \"PreLine\", \"PreWrap\"];\n }\n}\n\nexport function WhiteSpaceType_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Core.WhiteSpaceType\", [], WhiteSpaceType, () => [[], [], [], [], [], [], [], [], [], [], [], []]);\n}\n\nexport function WhiteSpaceTypeModule_value(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"inherit\";\n case 2:\n return \"initial\";\n case 3:\n return \"revert\";\n case 4:\n return \"unset\";\n case 5:\n return \"pre\";\n case 7:\n return \"break-spaces\";\n case 6:\n return \"normal\";\n case 8:\n return \"-moz-pre-wrap\";\n case 9:\n return \"nowrap\";\n case 10:\n return \"pre-line\";\n case 11:\n return \"pre-wrap\";\n default:\n return \"-moz-initial\";\n }\n}\n\nexport function TextModule_View(p) {\n let props;\n const color = map((x) => x, FSharpMap__TryFind(p, \"color\"));\n const variant = map(TextVariantModule_value, map((x_1) => x_1, FSharpMap__TryFind(p, \"variant\")));\n const userSelect = map(UserSelectTypeModule_value, map((x_2) => x_2, FSharpMap__TryFind(p, \"userSelect\")));\n const whiteSpace = map(WhiteSpaceTypeModule_value, map((x_3) => x_3, FSharpMap__TryFind(p, \"whiteSpace\")));\n props = {\n color: color,\n size: unwrap(map(TextSizeModule_value, map((x_4) => x_4, FSharpMap__TryFind(p, \"size\")))),\n userSelect: unwrap(userSelect),\n variant: unwrap(variant),\n whiteSpace: unwrap(whiteSpace),\n };\n const children = defaultArg(map((x_5) => x_5, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Text$, props, ...children);\n}\n\n","import { ProgramModule_map, ProgramModule_withSetState, ProgramModule_runWith, ProgramModule_init } from \"../Fable.Elmish.4.2.0/program.fs.js\";\nimport { clear, getEnumerator, equals, disposeSafe, uncurry2, uncurry3, isDisposable } from \"../fable-library-js.4.19.3/Util.js\";\nimport { Cmd_none } from \"../Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { class_type } from \"../fable-library-js.4.19.3/Reflection.js\";\nimport { useEffect, useState } from \"react\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\";\n\nclass Util_ElmishState$3 {\n constructor(program, arg, dependencies) {\n this.arg = arg;\n this.dependencies = dependencies;\n const program_1 = program();\n const queuedMessages = [];\n this.finalDispatch = undefined;\n let patternInput_1;\n const patternInput = ProgramModule_init(program_1)(this.arg);\n let model = patternInput[0];\n let cmd = patternInput[1];\n patternInput_1 = [[model, (msg) => {\n const matchValue = this.finalDispatch;\n if (matchValue == null) {\n void (queuedMessages.push(msg));\n }\n else {\n matchValue(msg);\n }\n }, false, queuedMessages], cmd];\n this.state = patternInput_1[0];\n this.cmd = patternInput_1[1];\n this.subscribe = ((callback) => {\n let dispose = false;\n const needsDispose = isDisposable(this.state[0]);\n ProgramModule_runWith(this.arg, ProgramModule_withSetState((model_5, dispatch_1) => {\n const patternInput_5 = this.state;\n this.finalDispatch = dispatch_1;\n this.state = [model_5, patternInput_5[1], true, queuedMessages];\n if (!(model_5 === patternInput_5[0])) {\n callback();\n }\n }, ProgramModule_map((_init, _arg) => {\n const cmd$0027 = this.cmd;\n this.cmd = Cmd_none();\n return [this.state[0], cmd$0027];\n }, (update, msg_2, model_4) => update(msg_2)(this.state[0]), uncurry3((x) => x), uncurry3((x_1) => x_1), uncurry2((x_2) => x_2), (tupledArg) => [(msg_1) => (tupledArg[0](msg_1) ? true : (needsDispose && dispose)), (model_3) => {\n const matchValue_2 = model_3;\n if (isDisposable(matchValue_2)) {\n const disp = matchValue_2;\n disposeSafe(disp);\n }\n else {\n tupledArg[1](model_3);\n }\n }], program_1)));\n return () => {\n dispose = true;\n };\n });\n }\n}\n\nfunction Util_ElmishState$3_$reflection(gen0, gen1, gen2) {\n return class_type(\"Feliz.UseElmish.Util.ElmishState`3\", [gen0, gen1, gen2], Util_ElmishState$3);\n}\n\nfunction Util_ElmishState$3_$ctor_Z29FF63CF(program, arg, dependencies) {\n return new Util_ElmishState$3(program, arg, dependencies);\n}\n\nfunction Util_ElmishState$3__get_State(_) {\n return _.state;\n}\n\nfunction Util_ElmishState$3__get_Subscribe(_) {\n return _.subscribe;\n}\n\nfunction Util_ElmishState$3__IsOutdated_1954DBC6(_, arg$0027, dependencies$0027) {\n if (!equals(_.arg, arg$0027)) {\n return true;\n }\n else {\n return !equals(_.dependencies, dependencies$0027);\n }\n}\n\nexport function React_useElmish_Z6C327F2E(program, arg, dependencies) {\n const patternInput = useState(() => Util_ElmishState$3_$ctor_Z29FF63CF(program, arg, dependencies));\n const state = patternInput[0];\n if (Util_ElmishState$3__IsOutdated_1954DBC6(state, arg, dependencies)) {\n patternInput[1](Util_ElmishState$3_$ctor_Z29FF63CF(program, arg, dependencies));\n }\n const patternInput_1 = useSyncExternalStore(Util_ElmishState$3__get_Subscribe(state), () => Util_ElmishState$3__get_State(state));\n const subscribed = patternInput_1[2];\n const queuedMessages = patternInput_1[3];\n const dispatch = patternInput_1[1];\n useEffect(() => {\n if (subscribed && (queuedMessages.length > 0)) {\n let enumerator = getEnumerator(queuedMessages);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const msg = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n setTimeout(() => {\n dispatch(msg);\n });\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n clear(queuedMessages);\n }\n }, [subscribed, queuedMessages]);\n return [patternInput_1[0], dispatch];\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { defaultArg, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { Link } from \"@stenajs-webui/elements\";\n\nexport function LinkModule_View(linkModule_ViewInputProps) {\n const p = linkModule_ViewInputProps.p;\n const props = {\n href: map((x) => x, FSharpMap__TryFind(p, \"href\")),\n id: map((x_1) => x_1, FSharpMap__TryFind(p, \"id\")),\n onClick: map((x_2) => x_2, FSharpMap__TryFind(p, \"onClick\")),\n };\n const children = defaultArg(map((x_3) => x_3, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Link, props, ...children);\n}\n\n","import * as react from \"react\";\nimport { StandardTable } from \"@stenajs-webui/grid\";\nimport { class_type } from \"../../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\n\nexport function StandardTableModule_view(props) {\n return react.createElement(StandardTable, props);\n}\n\nexport class standardTableVariant {\n constructor() {\n }\n}\n\nexport function standardTableVariant_$reflection() {\n return class_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Grid.standardTableVariant\", undefined, standardTableVariant);\n}\n\n","import { hours, minutes, days, totalDays, totalHours, totalMinutes, totalSeconds } from \"./fable_modules/fable-library-js.4.19.3/TimeSpan.js\";\n\nexport function formatToWholeUnits(sp) {\n const ts = ~~totalSeconds(sp) | 0;\n const tm = ~~totalMinutes(sp) | 0;\n const th = ~~totalHours(sp) | 0;\n const td = ~~totalDays(sp) | 0;\n const matchValue = ts < 60;\n const matchValue_1 = tm < 60;\n const matchValue_2 = th < 24;\n if (matchValue) {\n if (ts > 1) {\n return `${ts} seconds`;\n }\n else {\n return `${ts} second`;\n }\n }\n else if (matchValue_1) {\n if (tm > 1) {\n return `${tm} minutes`;\n }\n else {\n return `${tm} minute`;\n }\n }\n else if (matchValue_2) {\n if (th > 1) {\n return `${th} hours`;\n }\n else {\n return `${th} hour`;\n }\n }\n else if (td > 1) {\n return `${td} days`;\n }\n else {\n return `${td} day`;\n }\n}\n\nexport function formatToMultipleUnits(sp) {\n const d = days(sp) | 0;\n const m = minutes(sp) | 0;\n const h = hours(sp) | 0;\n if (d > 0) {\n return `${d}d ${h}h ${m}min`;\n }\n else if (h > 0) {\n return `${h}h ${m}min`;\n }\n else {\n return `${m}min`;\n }\n}\n\n","import { Union } from \"../../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { union_type } from \"../../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport React from \"react\";\nimport * as react from \"react\";\nimport { map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { CheckboxWithLabel } from \"@stenajs-webui/forms\";\n\nexport class CheckboxSize extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Standard\", \"Small\"];\n }\n}\n\nexport function CheckboxSize_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Elements.CheckboxSize\", [], CheckboxSize, () => [[], []]);\n}\n\nexport function CheckboxSizeModule_value(_arg) {\n if (_arg.tag === 1) {\n return \"small\";\n }\n else {\n return \"standard\";\n }\n}\n\nexport function CheckboxWithLabelModule_View(checkboxWithLabelModule_ViewInputProps) {\n const p = checkboxWithLabelModule_ViewInputProps.p;\n let props;\n const label = map((x) => x, FSharpMap__TryFind(p, \"label\"));\n const disabled = map((x_1) => x_1, FSharpMap__TryFind(p, \"disabled\"));\n const indeterminate = map((x_2) => x_2, FSharpMap__TryFind(p, \"indeterminate\"));\n const size = map((x_3) => x_3, FSharpMap__TryFind(p, \"size\"));\n const value = map((x_4) => x_4, FSharpMap__TryFind(p, \"value\"));\n props = {\n disabled: disabled,\n indeterminate: indeterminate,\n label: label,\n onChange: map((x_5) => x_5, FSharpMap__TryFind(p, \"onChange\")),\n onValueChange: map((x_6) => x_6, FSharpMap__TryFind(p, \"onValueChange\")),\n size: size,\n value: value,\n };\n return react.createElement(CheckboxWithLabel, props);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { map, defaultArg } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { SwitchWithLabel } from \"@stenajs-webui/forms\";\n\nexport function SwitchWithLabelModule_View(switchWithLabelModule_ViewInputProps) {\n const p = switchWithLabelModule_ViewInputProps.p;\n let props;\n const label = defaultArg(map((x) => x, FSharpMap__TryFind(p, \"label\")), \"Label\");\n const textColor = map((x_1) => x_1, FSharpMap__TryFind(p, \"textColor\"));\n const value = map((x_2) => x_2, FSharpMap__TryFind(p, \"value\"));\n props = {\n label: label,\n onValueChange: map((x_3) => x_3, FSharpMap__TryFind(p, \"onValueChange\")),\n textColor: textColor,\n value: value,\n };\n return react.createElement(SwitchWithLabel, props);\n}\n\n","import React, { Component } from \"react\";\nimport {useMapEvents} from \"react-leaflet\";\n\nfunction MapEventsComponent(props) {\n const map = useMapEvents({\n click: (args) => {\n props.onClick (args.latlng.lat, args.latlng.lng)\n }\n })\n return null\n}\n\nfunction withEvents() {\n return function WrappedComponent(props) {\n return ;\n };\n}\n\nexport default withEvents();","import React from \"react\";\nimport * as react from \"react\";\nimport { map, defaultArg } from \"../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { Point } from \"../../StenaWeather.Domain/Forecast.js\";\nimport MapEventsControl from \"../../../src/StenaWeather.WeatherServiceUI.Client/Components/Leaflet/MapEventsControl.js\";\n\nexport function MapEvents_View(mapEvents_ViewInputProps) {\n const p = mapEvents_ViewInputProps.p;\n const onClick = defaultArg(map((x) => x, FSharpMap__TryFind(p, \"onClick\")), (value) => {\n });\n const props = {\n onClick: (lat, lon) => {\n onClick(new Point(lon, lat));\n },\n };\n return react.createElement(MapEventsControl, props);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { unwrap, defaultArg, map } from \"../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { Point_toPosition } from \"./Shared.js\";\nimport { FSharpMap__TryFind } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { Popup } from \"react-leaflet\";\n\nexport function Popup_View(popup_ViewInputProps) {\n const p = popup_ViewInputProps.p;\n let props;\n const position = map(Point_toPosition, map((x) => x, FSharpMap__TryFind(p, \"position\")));\n const onClose = map((x_1) => x_1, FSharpMap__TryFind(p, \"onClose\"));\n props = {\n closeButton: defaultArg(map((x_2) => x_2, FSharpMap__TryFind(p, \"closeButton\")), true),\n closeOnClick: defaultArg(map((x_3) => x_3, FSharpMap__TryFind(p, \"closeOnClick\")), true),\n onClose: onClose,\n position: unwrap(position),\n };\n const children = defaultArg(map((x_4) => x_4, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Popup, props, ...children);\n}\n\n","import React, { Component } from \"react\";\nimport { useMap } from \"react-leaflet\";\nimport L, { LeafletMouseEvent, Map } from \"leaflet\";\n\nclass Legend extends React.Component {\n legendDiv;\n createLegendControl() {\n const MapHelp = L.Control.extend({\n onAdd: (map) => {\n const legendDiv = L.DomUtil.create(\"div\", \"legend\");\n this.legendDiv = legendDiv;\n legendDiv.innerHTML = this.props.html;\n return legendDiv;\n }\n });\n return new MapHelp({ position: this.props.position });\n }\n\n componentDidMount() {\n const { map } = this.props;\n const control = this.createLegendControl();\n control.addTo(map);\n }\n\n componentWillUnmount() {\n this.legendDiv.remove();\n }\n\n render() {\n return null;\n }\n}\n\nfunction withMap(Component) {\n return function WrappedComponent(props) {\n const map = useMap();\n return ;\n };\n}\n\nexport default withMap(Legend);","import { Union } from \"../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { union_type } from \"../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport React from \"react\";\nimport * as react from \"react\";\nimport { join } from \"../../fable_modules/fable-library-js.4.19.3/String.js\";\nimport { empty, map } from \"../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport server from \"react-dom/server\";\nimport { map as map_1, defaultArg } from \"../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport LegendControl from \"../../../src/StenaWeather.WeatherServiceUI.Client/Components/Leaflet/LegendControl.js\";\n\nexport class LegendPosition extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\n }\n}\n\nexport function LegendPosition_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Components.Leaflet.LegendPosition\", [], LegendPosition, () => [[], [], [], []]);\n}\n\nexport function LegendPositionModule_value(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"topright\";\n case 2:\n return \"bottomleft\";\n case 3:\n return \"bottomright\";\n default:\n return \"topleft\";\n }\n}\n\nexport function Legend_View(legend_ViewInputProps) {\n const p = legend_ViewInputProps.p;\n const props = {\n html: join(\"\", map((element) => server.renderToString(element), defaultArg(map_1((x) => x, FSharpMap__TryFind(p, \"children\")), empty()))),\n position: LegendPositionModule_value(defaultArg(map_1((x_1) => x_1, FSharpMap__TryFind(p, \"position\")), new LegendPosition(3, []))),\n };\n return react.createElement(LegendControl, props);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { unwrap, defaultArg, map } from \"../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { Point_toPosition } from \"./Shared.js\";\nimport { FSharpMap__TryFind } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { map as map_1 } from \"../../fable_modules/fable-library-js.4.19.3/Array.js\";\nimport { empty, toArray } from \"../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { MapContainer } from \"react-leaflet\";\n\nexport function MapContainer_View(mapContainer_ViewInputProps) {\n const p = mapContainer_ViewInputProps.p;\n let props;\n const center = map(Point_toPosition, map((x) => x, FSharpMap__TryFind(p, \"center\")));\n const zoom = map((x_1) => x_1, FSharpMap__TryFind(p, \"zoom\"));\n const scrollWheelZoom = map((x_2) => x_2, FSharpMap__TryFind(p, \"scrollWheelZoom\"));\n props = {\n bounds: map_1(Point_toPosition, toArray(defaultArg(map((x_3) => x_3, FSharpMap__TryFind(p, \"bounds\")), empty()))),\n center: unwrap(center),\n maxBoundsViscosity: 1,\n scrollWheelZoom: scrollWheelZoom,\n zoom: zoom,\n };\n const children = defaultArg(map((x_4) => x_4, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(MapContainer, props, ...children);\n}\n\n","import { toString, Record, Union } from \"../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { Request_UpdatePriority, Response_Model, Response_Model_$reflection } from \"../StenaWeather.WeatherServiceUI.Shared/Models/API.js\";\nimport { record_type, string_type, option_type, unit_type, int32_type, bool_type, union_type, list_type } from \"../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { ServerError_$reflection } from \"../StenaWeather.WeatherServiceUI.Shared/Errors.js\";\nimport { FSharpResult$2 } from \"../fable_modules/fable-library-js.4.19.3/Result.js\";\nimport { Point, Point_$reflection } from \"../StenaWeather.Domain/Forecast.js\";\nimport { ModelUpdateStatus, ModelAreaModule_isPointWithin, ModelKey, Models_all, ModelArea_$reflection } from \"../StenaWeather.Domain/Models.js\";\nimport { isEmpty, iterateIndexed, mapIndexed, sortBy, cons, filter, exists, map, singleton, empty, item, length, indexed, tryFind, ofArray } from \"../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { value as value_50, map as map_1, defaultArg, some } from \"../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { WeatherTypeModule_Parameter_$reflection } from \"../StenaWeather.Domain/Weather.js\";\nimport { PageTitle_title, ErrorView_Cmd_ofError } from \"../SharedView.js\";\nimport { Cmd_none } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { noCmd } from \"../UseElmish.js\";\nimport { reorder } from \"../List.js\";\nimport { defaultOf, curry2, int32ToString, createObj, equals, comparePrimitives } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { onModelsAPI, Cmd_OfAsync_eitherAsResult } from \"../Server.js\";\nimport { ofList } from \"../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport * as react from \"react\";\nimport { Polygon_View } from \"../Components/Leaflet/Polygon.js\";\nimport { Rectangle_View } from \"../Components/Leaflet/Rectangle.js\";\nimport Models$002Emodule from \"../../src/StenaWeather.WeatherServiceUI.Client/Pages/Models.module.scss\";\nimport { printf, toText, replace, join } from \"../fable_modules/fable-library-js.4.19.3/String.js\";\nimport { reactApi } from \"../fable_modules/Feliz.2.8.0/Interop.fs.js\";\nimport { IconModule_View } from \"../Components/StenaWebUI/Icons/Icon.js\";\nimport { faCaretDown, faCaretUp, faGripVertical, faCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { TextModule_View } from \"../Components/StenaWebUI/Core/Text.js\";\nimport { WhiteSpaceType, UserSelectType, TextSize, TextVariant } from \"../Components/StenaWebUI/Core/Text.js\";\nimport { toArray, empty as empty_1, singleton as singleton_1, append, delay, toList } from \"../fable_modules/fable-library-js.4.19.3/Seq.js\";\nimport { rangeDouble } from \"../fable_modules/fable-library-js.4.19.3/Range.js\";\nimport { ButtonBase_ViewSecondary, ButtonBase_ViewPrimary, ButtonBase_ViewFlat } from \"../Components/StenaWebUI/Elements/Button.js\";\nimport { ButtonSize } from \"../Components/StenaWebUI/Elements/Button.js\";\nimport { React_useElmish_Z6C327F2E } from \"../fable_modules/Feliz.UseElmish.2.5.0/UseElmish.fs.js\";\nimport { ProgramModule_mkProgram } from \"../fable_modules/Fable.Elmish.4.2.0/program.fs.js\";\nimport { LinkModule_View } from \"../Components/StenaWebUI/Elements/Link.js\";\nimport { StandardTableModule_view } from \"../Components/StenaWebUI/Grid/StandardTable.js\";\nimport { formatToWholeUnits } from \"../TimeSpan.js\";\nimport { utcNow, op_Subtraction } from \"../fable_modules/fable-library-js.4.19.3/DateOffset.js\";\nimport { CheckboxWithLabelModule_View } from \"../Components/StenaWebUI/Elements/CheckBox.js\";\nimport { SwitchWithLabelModule_View } from \"../Components/StenaWebUI/Forms/SwitchWithLabel.js\";\nimport { MapEvents_View } from \"../Components/Leaflet/MapEvents.js\";\nimport { TileLayer } from \"react-leaflet\";\nimport { Popup_View } from \"../Components/Leaflet/Popup.js\";\nimport { LegendPosition } from \"../Components/Leaflet/Legend.js\";\nimport { Legend_View } from \"../Components/Leaflet/Legend.js\";\nimport { MapContainer_View } from \"../Components/Leaflet/Container.js\";\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"LoadModels\", \"OnModelsLoaded\", \"OnModelToggled\", \"ToggleMap\", \"ModelPriorityChanged\", \"SaveModelPriorities\", \"OnPrioritiesSaved\", \"SetModelCoveragePoint\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.Models.Msg\", [], Msg, () => [[], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [list_type(Response_Model_$reflection()), ServerError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", list_type(Response_Model_$reflection())]], [[\"ErrorValue\", ServerError_$reflection()]]])]], [[\"Item\", Response_Model_$reflection()]], [[\"Item\", bool_type]], [[\"oldIndex\", int32_type], [\"newIndex\", int32_type]], [], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [unit_type, ServerError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", unit_type]], [[\"ErrorValue\", ServerError_$reflection()]]])]], [[\"Item\", option_type(Point_$reflection())]]]);\n}\n\nexport class MapModel extends Record {\n constructor(Color, Name, Label, Area) {\n super();\n this.Color = Color;\n this.Name = Name;\n this.Label = Label;\n this.Area = Area;\n }\n}\n\nexport function MapModel_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.Models.MapModel\", [], MapModel, () => [[\"Color\", string_type], [\"Name\", string_type], [\"Label\", string_type], [\"Area\", ModelArea_$reflection()]]);\n}\n\nexport function getColor(name) {\n const colors = ofArray([\"#bfffa5\", \"#ea6776\", \"#fc64a9\", \"#69178c\", \"#dce587\", \"#8aa01b\", \"#f72211\", \"#6773fc\", \"#f2af68\", \"#2175f2\", \"#fcc90f\", \"#0066af\", \"#dfff77\", \"#fcc4fa\", \"#9274d3\", \"#dd46bd\", \"#dd46be\", \"#bfffa9\", \"#fc64af\", \"#bffdb5\", \"#5772bc\", \"#40b5ad\"]);\n const matchValue = tryFind((tupledArg) => (tupledArg[1].Name === name), indexed(Models_all));\n if (matchValue != null) {\n if (matchValue[0] < length(colors)) {\n const i_1 = matchValue[0] | 0;\n return item(i_1, colors);\n }\n else {\n const i_2 = matchValue[0] | 0;\n console.warn(some(\"getColor: index too big\"), i_2);\n return \"#aaaaaa\";\n }\n }\n else {\n console.warn(some(\"getColor: name not found\"), name);\n return \"#aaaaaa\";\n }\n}\n\nexport function MapModelModule_ofModel(m) {\n return new MapModel(getColor(m.ModelName), m.ModelName, `${m.ModelName} (${m.Provider})`, m.Area);\n}\n\nexport class State extends Record {\n constructor(Parameter, Models, MapModels, ExpandMap, ModelsReordered, ModelCoveragePoint) {\n super();\n this.Parameter = Parameter;\n this.Models = Models;\n this.MapModels = MapModels;\n this.ExpandMap = ExpandMap;\n this.ModelsReordered = ModelsReordered;\n this.ModelCoveragePoint = ModelCoveragePoint;\n }\n}\n\nexport function State_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.Models.State\", [], State, () => [[\"Parameter\", WeatherTypeModule_Parameter_$reflection()], [\"Models\", list_type(Response_Model_$reflection())], [\"MapModels\", list_type(MapModel_$reflection())], [\"ExpandMap\", bool_type], [\"ModelsReordered\", bool_type], [\"ModelCoveragePoint\", option_type(Point_$reflection())]]);\n}\n\nexport function init(p, unitVar) {\n return [new State(p, empty(), empty(), true, false, undefined), singleton((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n}\n\nexport function update(msg, state) {\n let x_3;\n switch (msg.tag) {\n case 1: {\n const models = msg.fields[0];\n if (models.tag === 1) {\n return [state, ErrorView_Cmd_ofError(models.fields[0])];\n }\n else {\n const models_1 = models.fields[0];\n return [new State(state.Parameter, models_1, map(MapModelModule_ofModel, models_1), state.ExpandMap, false, state.ModelCoveragePoint), Cmd_none()];\n }\n }\n case 2: {\n const model = msg.fields[0];\n return [new State(state.Parameter, state.Models, exists((x_1) => (x_1.Name === model.ModelName), state.MapModels) ? filter((x_2) => (x_2.Name !== model.ModelName), state.MapModels) : cons(MapModelModule_ofModel(model), state.MapModels), state.ExpandMap, state.ModelsReordered, state.ModelCoveragePoint), Cmd_none()];\n }\n case 3:\n return noCmd(new State(state.Parameter, state.Models, state.MapModels, msg.fields[0], state.ModelsReordered, state.ModelCoveragePoint));\n case 4: {\n const newModels = sortBy((x_5) => x_5.Priority, mapIndexed((i, x_4) => (new Response_Model(i, x_4.DataSourceDescription, x_4.Provider, x_4.ModelName, x_4.SpatialResolution, x_4.SpatialResolutionInKm, x_4.TemporalResolution, x_4.Area, x_4.TemporalRange, x_4.UpdateFrequency, x_4.LastUpdated, x_4.ForecastCreated, x_4.SourceType, x_4.IsRotated, x_4.Status)), (x_3 = reorder(msg.fields[0], msg.fields[1], state.Models), (console.log(some(x_3)), x_3))), {\n Compare: comparePrimitives,\n });\n return noCmd(new State(state.Parameter, newModels, state.MapModels, state.ExpandMap, state.ModelsReordered ? true : !equals(state.Models, newModels), state.ModelCoveragePoint));\n }\n case 5: {\n const reqData = new Request_UpdatePriority(state.Parameter, map((x_7) => (new ModelKey(x_7.Provider, x_7.ModelName)), state.Models));\n return [state, Cmd_OfAsync_eitherAsResult(() => onModelsAPI((x_8) => x_8.SavePriorities(reqData)), (Item_1) => (new Msg(6, [Item_1])))];\n }\n case 6: {\n const res = msg.fields[0];\n if (res.tag === 1) {\n return [state, ErrorView_Cmd_ofError(res.fields[0])];\n }\n else {\n return [state, singleton((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n }\n }\n case 7:\n return noCmd(new State(state.Parameter, state.Models, state.MapModels, state.ExpandMap, state.ModelsReordered, msg.fields[0]));\n default:\n return [state, Cmd_OfAsync_eitherAsResult(() => onModelsAPI((x) => x.GetModels(state.Parameter)), (Item) => (new Msg(1, [Item])))];\n }\n}\n\nfunction modelRectangle(m) {\n let area;\n const matchValue = m.Area;\n if (matchValue.tag === 1) {\n const p_1_2 = ofList(map((value_1) => value_1, ofArray([[\"fill\", true], [\"color\", m.Color], [\"fillOpacity\", 0.15], [\"points\", matchValue.fields[0]]])), {\n Compare: comparePrimitives,\n });\n return createElement(Polygon_View, {\n p: p_1_2,\n });\n }\n else {\n const p_1_1 = ofList(map((value) => value, ofArray([(area = matchValue.fields[0], [\"bounds\", [new Point(area.West, area.North), new Point(area.East, area.South)]]), [\"color\", m.Color], [\"fillOpacity\", 0.15]])), {\n Compare: comparePrimitives,\n });\n return createElement(Rectangle_View, {\n p: p_1_1,\n });\n }\n}\n\nexport const cn = (() => {\n const styles = Models$002Emodule;\n const cnFn = (name) => (styles[name]);\n const cnFns = (names) => map((x) => (styles[x]), names);\n return {\n className: cnFn,\n classes: cnFns,\n prop: {\n className: (arg) => [\"className\", cnFn(arg)],\n classes: (arg_1) => [\"className\", join(\" \", cnFns(arg_1))],\n },\n };\n})();\n\nexport function ModelUpdateStatus_value(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"To be updated\";\n case 2:\n return \"Outdated\";\n default:\n return \"Up to date\";\n }\n}\n\nfunction modelLegend(m) {\n let elements;\n const elm = ofArray([createElement(\"svg\", createObj(singleton((elements = singleton(createElement(\"rect\", {\n fill: m.Color,\n })), [\"children\", reactApi.Children.toArray(Array.from(elements))])))), createElement(\"span\", {\n children: [m.Name],\n })]);\n return createElement(\"div\", {\n className: cn.className(\"legend-item\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n}\n\nexport class uiObj extends Record {\n constructor(item) {\n super();\n this.item = item;\n }\n}\n\nexport function uiObj_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.Models.uiObj\", [], uiObj, () => [[\"item\", Response_Model_$reflection()]]);\n}\n\nexport function renderCellForStatus(f) {\n let t_4, t_7, t_1;\n let icon;\n const matchValue = f.item.Status;\n icon = ((matchValue.tag === 1) ? IconModule_View(ofList(map((value_1) => value_1, ofArray([[\"size\", 10], (t_4 = faCircle, [\"icon\", t_4]), [\"color\", \"var(--lhds-color-orange-500)\"]])), {\n Compare: comparePrimitives,\n })) : ((matchValue.tag === 2) ? IconModule_View(ofList(map((value_2) => value_2, ofArray([[\"size\", 10], (t_7 = faCircle, [\"icon\", t_7]), [\"color\", \"var(--lhds-color-red-500)\"]])), {\n Compare: comparePrimitives,\n })) : IconModule_View(ofList(map((value) => value, ofArray([[\"size\", 10], (t_1 = faCircle, [\"icon\", t_1]), [\"color\", \"var(--lhds-color-green-500)\"]])), {\n Compare: comparePrimitives,\n }))));\n const text = TextModule_View(ofList(map((value_4) => value_4, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(1, [])], [\"color\", \"var(--lhds-color-ui-500)\"], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", ModelUpdateStatus_value(f.item.Status)]])), {\n Compare: comparePrimitives,\n }));\n return createElement(\"div\", {\n className: cn.className(\"status\"),\n children: reactApi.Children.toArray([icon, text]),\n });\n}\n\nexport function getHeader(s) {\n switch (s.tag) {\n case 0:\n return \"Wind\";\n case 2:\n return \"Current\";\n case 3:\n return \"Waves\";\n case 4:\n return \"Tide (Sea Surface Height)\";\n case 5:\n return \"Primary Swell\";\n case 6:\n return \"Seconday Swell\";\n case 7:\n return \"Wind Waves\";\n case 8:\n return \"Clouds\";\n case 9:\n return \"Air Temperature\";\n case 10:\n return \"Precipitation\";\n default:\n return \"\";\n }\n}\n\nexport function findParentElm(name_mut, e_mut) {\n findParentElm:\n while (true) {\n const name = name_mut, e = e_mut;\n if (e.parentElement.tagName === name) {\n return e.parentElement;\n }\n else {\n name_mut = name;\n e_mut = e.parentElement;\n continue findParentElm;\n }\n break;\n }\n}\n\nexport function hasDroppableClass(el) {\n return el.className.indexOf(\"dragover\") >= 0;\n}\n\nexport function addDroppableClass(el) {\n if (!hasDroppableClass(el)) {\n el.className = (el.className + \" dragover\");\n }\n}\n\nexport function removeDroppableClass(el) {\n el.className = replace(el.className, \" dragover\", \"\");\n}\n\nexport function setDroppable(onDrop, index, el) {\n const getTr = (x) => findParentElm(\"TR\", x.target);\n el.ondragenter = ((x_1) => {\n x_1.preventDefault();\n addDroppableClass(getTr(x_1));\n });\n el.ondragleave = ((x_2) => {\n const elm = getTr(x_2);\n const rect = elm.getBoundingClientRect();\n if ((((x_2.clientY < rect.top) ? true : (x_2.clientY >= rect.bottom)) ? true : (x_2.clientX < rect.left)) ? true : (x_2.clientX >= rect.right)) {\n removeDroppableClass(elm);\n }\n else {\n addDroppableClass(elm);\n }\n });\n el.ondragover = ((x_3) => {\n const elm_1 = getTr(x_3);\n if (elm_1.className.indexOf(\"dragover\") >= 0) {\n x_3.preventDefault();\n }\n });\n el.ondrop = ((x_4) => {\n x_4.preventDefault();\n const elm_2 = getTr(x_4);\n if (hasDroppableClass(elm_2)) {\n onDrop(index);\n }\n removeDroppableClass(elm_2);\n });\n}\n\nexport function RenderDraggableIcon(dispatch, o) {\n let elems, t_1;\n return createElement(\"div\", createObj(ofArray([[\"draggable\", true], [\"onDragEnd\", (x) => {\n const tbody = findParentElm(\"TBODY\", x.currentTarget);\n tbody.className = \"\";\n }], [\"onDragStart\", (x_1) => {\n const tr = findParentElm(\"TR\", x_1.currentTarget);\n const tbody_1 = findParentElm(\"TBODY\", tr);\n if (tbody_1.children.length > 0) {\n iterateIndexed((index, el) => {\n setDroppable((i) => {\n dispatch(new Msg(4, [o.item.Priority, i]));\n }, index, el);\n }, map((i_1) => (tbody_1.children[i_1]), toList(rangeDouble(0, 1, tbody_1.children.length - 1))));\n }\n tbody_1.className = \"droppable\";\n const e_3 = x_1.dataTransfer;\n e_3.setDragImage(tr,0,20);\n x_1.dataTransfer.effectAllowed = \"move\";\n }], [\"style\", {\n cursor: \"move\",\n }], (elems = [IconModule_View(ofList(map((value_6) => value_6, ofArray([[\"size\", 20], (t_1 = faGripVertical, [\"icon\", t_1]), [\"color\", \"var(--lhds-color-ui-400)\"]])), {\n Compare: comparePrimitives,\n }))], [\"children\", reactApi.Children.toArray(Array.from(elems))])])));\n}\n\nexport function RenderEditablePriorityCell(dispatch, itemCount, o) {\n let elm_4;\n const changePriority = (i, unitVar) => dispatch(new Msg(4, [o.item.Priority, i]));\n const maxPriority = (itemCount - 1) | 0;\n const elm = ofArray([createElement(\"div\", {\n className: cn.className(\"priority-label\"),\n children: int32ToString(o.item.Priority + 1),\n }), (elm_4 = ofArray([ButtonBase_ViewFlat(ofList(map((value_13) => value_13, toList(delay(() => append(singleton_1([\"leftIcon\", faCaretUp]), delay(() => append(singleton_1([\"size\", new ButtonSize(2, [])]), delay(() => {\n let arg;\n return append(singleton_1([\"id\", (arg = o.item.ModelName, toText(printf(\"priority-down-%s\"))(arg))]), delay(() => append(singleton_1([\"onClick\", curry2(changePriority)(o.item.Priority - 1)]), delay(() => ((o.item.Priority === 0) ? singleton_1([\"disabled\", true]) : empty_1())))));\n }))))))), {\n Compare: comparePrimitives,\n })), ButtonBase_ViewFlat(ofList(map((value_14) => value_14, toList(delay(() => append(singleton_1([\"leftIcon\", faCaretDown]), delay(() => append(singleton_1([\"size\", new ButtonSize(2, [])]), delay(() => {\n let arg_1;\n return append(singleton_1([\"id\", (arg_1 = o.item.ModelName, toText(printf(\"priority-up-%s\"))(arg_1))]), delay(() => append(singleton_1([\"onClick\", curry2(changePriority)(o.item.Priority + 1)]), delay(() => ((o.item.Priority === maxPriority) ? singleton_1([\"disabled\", true]) : empty_1())))));\n }))))))), {\n Compare: comparePrimitives,\n }))]), createElement(\"div\", {\n className: cn.className(\"priority-buttons\"),\n children: reactApi.Children.toArray(Array.from(elm_4)),\n }))]);\n return createElement(\"div\", {\n className: cn.className(\"priority-cell\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n}\n\nexport function renderModelCell(p) {\n const elm = ofArray([TextModule_View(ofList(map((value_4) => value_4, ofArray([[\"variant\", new TextVariant(3, [])], [\"size\", new TextSize(0, [])], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", p.item.ModelName]])), {\n Compare: comparePrimitives,\n })), TextModule_View(ofList(map((value_6) => value_6, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(1, [])], [\"color\", \"var(--lhds-color-ui-500)\"], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", toString(p.item.Provider)]])), {\n Compare: comparePrimitives,\n }))]);\n return createElement(\"div\", {\n className: cn.className(\"supplier\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n}\n\nexport function renderFullNameCell(p) {\n const elm = singleton(TextModule_View(ofList(map((value_4) => value_4, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(2, [])], [\"color\", \"var(--lhds-color-ui-500)\"], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", p.item.DataSourceDescription]])), {\n Compare: comparePrimitives,\n })));\n return createElement(\"div\", {\n className: cn.className(\"fullName\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n}\n\nexport function renderResolution(p) {\n const elm = ofArray([TextModule_View(ofList(map((value_4) => value_4, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(1, [])], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", p.item.SpatialResolution]])), {\n Compare: comparePrimitives,\n })), TextModule_View(ofList(map((value_6) => value_6, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(2, [])], [\"color\", \"var(--lhds-color-ui-500)\"], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", p.item.SpatialResolutionInKm]])), {\n Compare: comparePrimitives,\n }))]);\n return createElement(\"div\", {\n className: cn.className(\"spatialresolution\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n}\n\nfunction modelsCoveragePopup(mx) {\n let elm;\n if (isEmpty(mx)) {\n return TextModule_View(ofList(map((value_1) => value_1, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(2, [])], [\"color\", \"var(--lhds-color-ui-500)\"], [\"children\", \"This area is not covered by any model\"]])), {\n Compare: comparePrimitives,\n }));\n }\n else {\n const xs_1 = [TextModule_View(ofList(map((value_5) => value_5, ofArray([[\"variant\", new TextVariant(3, [])], [\"size\", new TextSize(0, [])], [\"children\", \"Available models:\"]])), {\n Compare: comparePrimitives,\n })), (elm = map((txt) => TextModule_View(ofList(map((value_3) => value_3, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(1, [])], [\"children\", txt]])), {\n Compare: comparePrimitives,\n })), map((x_3) => x_3.ModelName, mx)), createElement(\"div\", {\n className: cn.className(\"available-models\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n }))];\n return react.createElement(react.Fragment, {}, ...xs_1);\n }\n}\n\nexport function ModelsView(modelsViewInputProps) {\n let elm_2, elm_4, elm_6, elm_14, p_1_6, elems_7, p_1_10;\n const p = modelsViewInputProps.p;\n const patternInput = React_useElmish_Z6C327F2E(() => ProgramModule_mkProgram(() => init(p, undefined), update, (_arg, _arg_1) => {\n }), undefined, [p]);\n const state_1 = patternInput[0];\n const dispatch = patternInput[1];\n const paramName = getHeader(p);\n const coveringModels = sortBy((x) => x.ModelName, defaultArg(map_1((p_1) => filter((m) => ModelAreaModule_isPointWithin(m.Area, p_1), state_1.Models), state_1.ModelCoveragePoint), empty()), {\n Compare: comparePrimitives,\n });\n const elm = ofArray([(elm_2 = ofArray([(elm_4 = ofArray([PageTitle_title(`Weather Service Offer - ${paramName}`, `${paramName} models & geographical coverage`), (elm_6 = toList(delay(() => {\n let p_1_1;\n return state_1.ModelsReordered ? append(singleton_1((p_1_1 = ofList(map((value_14) => value_14, ofArray([[\"onClick\", () => {\n dispatch(new Msg(0, []));\n }], [\"id\", \"discard-priority-changes-button\"], [\"children\", \"Discard all changes\"]])), {\n Compare: comparePrimitives,\n }), createElement(LinkModule_View, {\n p: p_1_1,\n }))), delay(() => {\n let p_1_2;\n return singleton_1((p_1_2 = ofList(map((value_15) => value_15, ofArray([[\"label\", \"Confirm changes\"], [\"id\", \"confirm-priority-changes-button\"], [\"onClick\", (_arg_3) => {\n dispatch(new Msg(5, []));\n }]])), {\n Compare: comparePrimitives,\n }), createElement(ButtonBase_ViewPrimary, {\n p: p_1_2,\n })));\n })) : empty_1();\n })), createElement(\"div\", {\n className: cn.className(\"heading-warning\"),\n children: reactApi.Children.toArray(Array.from(elm_6)),\n }))]), createElement(\"div\", {\n className: cn.className(\"heading-wrapper\"),\n children: reactApi.Children.toArray(Array.from(elm_4)),\n })), createElement(\"div\", {\n className: cn.className(\"table\"),\n children: StandardTableModule_view(createObj(toList([[\"variant\", \"relaxed\"], [\"items\", toArray(state_1.Models)], [\"loading\", length(state_1.Models) === 0], [\"config\", createObj(toList(toList(delay(() => {\n const itemTypeInstance = defaultOf();\n const itemCount = length(state_1.Models) | 0;\n return append(singleton_1([\"keyResolver\", (i) => i.ModelName]), delay(() => append(singleton_1([\"rowBackgroundResolver\", (i_1) => {\n if (equals(i_1.Status, new ModelUpdateStatus(2, []))) {\n return {\n background: \"var(--lhds-color-red-50)\",\n };\n }\n else if (equals(i_1.Status, new ModelUpdateStatus(1, []))) {\n return {\n background: \"var(--lhds-color-orange-50)\",\n };\n }\n else {\n return {\n background: \"var(--swui-white)\",\n };\n }\n }]), delay(() => append(singleton_1([\"stickyHeader\", true]), delay(() => append(singleton_1([\"stickyColumnGroups\", \"first\"]), delay(() => append(singleton_1([\"disableSorting\", true]), delay(() => {\n let columnProps, columnProps_1, columnProps_2, columnProps_3, columnProps_4, columnProps_5, columnProps_6, columnProps_7, columnProps_8, columnProps_9, columnProps_10, columnProps_11, columnProps_12;\n return append(singleton_1([\"columns\", createObj([(columnProps = createObj(toList([[\"name\", \"DGColumn\"], [\"itemValueResolver\", (value_20) => {\n }], [\"columnLabel\", \"\"], [\"width\", toText(`${30}px`)], [\"renderCell\", (o) => RenderDraggableIcon(dispatch, o)]])), [columnProps.name, columnProps]), (columnProps_1 = createObj(toList([[\"name\", \"Priority\"], [\"itemValueResolver\", (i_2) => i_2.Priority], [\"width\", toText(`${80}px`)], [\"renderCell\", (o_1) => RenderEditablePriorityCell(dispatch, itemCount, o_1)]])), [columnProps_1.name, columnProps_1]), (columnProps_2 = createObj(toList([[\"name\", \"Name\"], [\"itemValueResolver\", (value_21) => {\n }], [\"width\", toText(`${155}px`)], [\"columnLabel\", \"Model/Supplier\"], [\"renderCell\", renderModelCell]])), [columnProps_2.name, columnProps_2]), (columnProps_3 = createObj(toList([[\"name\", \"DataSource\"], [\"itemValueResolver\", (value_22) => {\n }], [\"borderLeft\", true], [\"width\", toText(`${158}px`)], [\"columnLabel\", \"Full name\"], [\"renderCell\", renderFullNameCell]])), [columnProps_3.name, columnProps_3]), (columnProps_4 = createObj(toList([[\"name\", \"Status\"], [\"itemValueResolver\", (i_3) => i_3.Status], [\"width\", toText(`${145}px`)], [\"renderCell\", renderCellForStatus]])), [columnProps_4.name, columnProps_4]), (columnProps_5 = createObj(toList([[\"name\", \"LastUpdated\"], [\"itemValueResolver\", (i_4) => {\n const matchValue = i_4.LastUpdated;\n if (matchValue != null) {\n const u = matchValue;\n return `${formatToWholeUnits(op_Subtraction(utcNow(), u))} ago`;\n }\n else {\n return \"Not available\";\n }\n }], [\"borderLeft\", true], [\"width\", toText(`${145}px`)]])), [columnProps_5.name, columnProps_5]), (columnProps_6 = createObj(toList([[\"name\", \"SpatialResolution\"], [\"itemValueResolver\", (i_5) => i_5.SpatialResolution], [\"borderLeft\", true], [\"width\", toText(`${145}px`)], [\"renderCell\", renderResolution]])), [columnProps_6.name, columnProps_6]), (columnProps_7 = createObj(toList([[\"name\", \"TemporalResolution\"], [\"itemValueResolver\", (i_6) => formatToWholeUnits(i_6.TemporalResolution)], [\"borderLeft\", true], [\"width\", toText(`${130}px`)]])), [columnProps_7.name, columnProps_7]), (columnProps_8 = createObj(toList([[\"name\", \"TemporalRange\"], [\"itemValueResolver\", (i_7) => formatToWholeUnits(i_7.TemporalRange)], [\"borderLeft\", true], [\"width\", toText(`${130}px`)]])), [columnProps_8.name, columnProps_8]), (columnProps_9 = createObj(toList([[\"name\", \"UpdateFrequency\"], [\"itemValueResolver\", (i_8) => formatToWholeUnits(i_8.UpdateFrequency)], [\"borderLeft\", true], [\"width\", toText(`${145}px`)]])), [columnProps_9.name, columnProps_9]), (columnProps_10 = createObj(toList([[\"name\", \"SourceType\"], [\"itemValueResolver\", (i_9) => i_9.SourceType], [\"borderLeft\", true], [\"width\", toText(`${100}px`)]])), [columnProps_10.name, columnProps_10]), (columnProps_11 = createObj(toList([[\"name\", \"IsRotated\"], [\"itemValueResolver\", (i_10) => i_10.IsRotated], [\"borderLeft\", true], [\"width\", toText(`${100}px`)], [\"renderCell\", (x_4) => {\n let p_1_3;\n const elm_10 = singleton((p_1_3 = ofList(map((value_26) => value_26, ofArray([[\"value\", x_4.item.IsRotated], [\"label\", toString(x_4.item.IsRotated)], [\"disabled\", true]])), {\n Compare: comparePrimitives,\n }), createElement(CheckboxWithLabelModule_View, {\n p: p_1_3,\n })));\n return createElement(\"div\", {\n className: cn.className(\"cell\"),\n children: reactApi.Children.toArray(Array.from(elm_10)),\n });\n }]])), [columnProps_11.name, columnProps_11]), (columnProps_12 = createObj(toList([[\"name\", \"Action\"], [\"itemValueResolver\", (value_27) => {\n }], [\"borderLeft\", true], [\"width\", toText(`${180}px`)], [\"renderCell\", (f_1) => {\n const elm_12 = toList(delay(() => {\n let p_1_4;\n const size = new ButtonSize(2, []);\n const buttonId = `${f_1.item.ModelName}_button`;\n return exists((x_6) => (x_6.Name === f_1.item.ModelName), state_1.MapModels) ? singleton_1((p_1_4 = ofList(map((value_31) => value_31, ofArray([[\"id\", buttonId], [\"size\", size], [\"label\", \"Highlight area on map\"], [\"onClick\", (_arg_4) => {\n dispatch(new Msg(2, [f_1.item]));\n }]])), {\n Compare: comparePrimitives,\n }), createElement(ButtonBase_ViewPrimary, {\n p: p_1_4,\n }))) : singleton_1(ButtonBase_ViewSecondary(ofList(map((value_32) => value_32, ofArray([[\"id\", buttonId], [\"size\", size], [\"label\", \"Highlight area on map\"], [\"onClick\", (_arg_5) => {\n dispatch(new Msg(2, [f_1.item]));\n }]])), {\n Compare: comparePrimitives,\n })));\n }));\n return createElement(\"div\", {\n className: cn.className(\"cell\"),\n children: reactApi.Children.toArray(Array.from(elm_12)),\n });\n }]])), [columnProps_12.name, columnProps_12])])]), delay(() => {\n let groupProps, groupProps_1;\n return append(singleton_1([\"columnGroups\", createObj([(groupProps = createObj(toList([[\"name\", \"stickyGroup\"], [\"columnOrder\", [\"DGColumn\", \"Priority\", \"Name\", \"Status\"]]])), [groupProps.name, groupProps]), (groupProps_1 = createObj(toList([[\"name\", \"movingGroup\"], [\"columnOrder\", [\"LastUpdated\", \"SpatialResolution\", \"TemporalResolution\", \"TemporalRange\", \"UpdateFrequency\", \"SourceType\", \"IsRotated\", \"Action\", \"DataSource\"]]])), [groupProps_1.name, groupProps_1])])]), delay(() => singleton_1([\"columnGroupOrder\", [\"stickyGroup\", \"movingGroup\"]])));\n }));\n }))))))))));\n }))))]]))),\n })]), createElement(\"div\", {\n className: cn.className(\"models-content\"),\n children: reactApi.Children.toArray(Array.from(elm_2)),\n })), (elm_14 = singleton((p_1_6 = ofList(map((value_36) => value_36, ofArray([[\"label\", \"Expand map view\"], [\"onValueChange\", (x_9) => {\n dispatch(new Msg(3, [x_9]));\n }], [\"value\", state_1.ExpandMap]])), {\n Compare: comparePrimitives,\n }), createElement(SwitchWithLabelModule_View, {\n p: p_1_6,\n }))), createElement(\"div\", {\n className: cn.className(\"switch-box\"),\n children: reactApi.Children.toArray(Array.from(elm_14)),\n })), createElement(\"div\", createObj(ofArray([[\"key\", `map_${state_1.ExpandMap}`], [\"className\", cn.className(\"map\")], [\"style\", {\n height: (state_1.ExpandMap ? 100 : 30) + \"vh\",\n }], (elems_7 = [(p_1_10 = ofList(map((value_48) => value_48, ofArray([[\"center\", new Point(11.914596749734356, 57.69553343057764)], [\"scrollWheelZoom\", true], [\"zoom\", 3], [\"children\", toList(delay(() => {\n let p_1_7;\n return append(singleton_1((p_1_7 = ofList(map((value_45) => value_45, singleton([\"onClick\", (arg_1) => {\n dispatch(new Msg(7, [arg_1]));\n }])), {\n Compare: comparePrimitives,\n }), createElement(MapEvents_View, {\n p: p_1_7,\n }))), delay(() => {\n let props_17;\n return append(singleton_1((props_17 = {\n attribution: \"© OpenStreetMap contributors\",\n url: \"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\n }, react.createElement(TileLayer, props_17))), delay(() => append(map(modelRectangle, state_1.MapModels), delay(() => {\n let p_1_8;\n return append((state_1.ModelCoveragePoint != null) ? singleton_1((p_1_8 = ofList(map((value_46) => value_46, ofArray([[\"onClose\", () => {\n dispatch(new Msg(7, [undefined]));\n }], [\"position\", value_50(state_1.ModelCoveragePoint)], [\"children\", singleton(modelsCoveragePopup(coveringModels))]])), {\n Compare: comparePrimitives,\n }), createElement(Popup_View, {\n p: p_1_8,\n }))) : empty_1(), delay(() => {\n let p_1_9;\n return singleton_1((p_1_9 = ofList(map((value_47) => value_47, ofArray([[\"position\", new LegendPosition(3, [])], [\"children\", toList(delay(() => map(modelLegend, state_1.MapModels)))]])), {\n Compare: comparePrimitives,\n }), createElement(Legend_View, {\n p: p_1_9,\n })));\n }));\n }))));\n }));\n }))]])), {\n Compare: comparePrimitives,\n }), createElement(MapContainer_View, {\n p: p_1_10,\n }))], [\"children\", reactApi.Children.toArray(Array.from(elems_7))])])))]);\n return createElement(\"div\", {\n className: cn.className(\"models\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n}\n\n","import { ofArray, toArray, item as item_1, length, singleton, isEmpty } from \"./fable_modules/fable-library-js.4.19.3/List.js\";\nimport { empty, singleton as singleton_1, collect, delay, toList } from \"./fable_modules/fable-library-js.4.19.3/Seq.js\";\nimport { rangeDouble } from \"./fable_modules/fable-library-js.4.19.3/Range.js\";\nimport { concat, mapIndexed, splitAt, choose, item as item_2 } from \"./fable_modules/fable-library-js.4.19.3/Array.js\";\nimport { some } from \"./fable_modules/fable-library-js.4.19.3/Option.js\";\n\nexport function insertAt(index, newEl, input) {\n if (isEmpty(input)) {\n return singleton(newEl);\n }\n else {\n const list = input;\n const indexes = (length(list) - 1) | 0;\n return toList(delay(() => collect((i) => ((index === i) ? [newEl, item_1(i, list)] : (((index > i) && (i === indexes)) ? [item_1(i, list), newEl] : singleton_1(item_1(i, list)))), toList(rangeDouble(0, 1, indexes)))));\n }\n}\n\nexport function replaceAt(index, newEl, input) {\n const indexes = (length(input) - 1) | 0;\n return toList(delay(() => collect((i) => ((index === i) ? singleton_1(newEl) : singleton_1(item_1(i, input))), toList(rangeDouble(0, 1, indexes)))));\n}\n\nexport function removeAt(index, input) {\n const indexes = (length(input) - 1) | 0;\n return toList(delay(() => collect((i) => ((index !== i) ? singleton_1(item_1(i, input)) : empty()), toList(rangeDouble(0, 1, indexes)))));\n}\n\nexport function moveAt(from, into, input) {\n return insertAt((into < 0) ? 0 : into, item_1(from, input), removeAt(from, input));\n}\n\nfunction add1(x) {\n return x + 1;\n}\n\nexport function reorder(oldIndex, newIndex, itemsList) {\n let patternInput;\n const items = toArray(itemsList);\n const itemTobeMoved = item_2(oldIndex, items);\n item_2(newIndex, items);\n return ofArray(choose((x) => x, (patternInput = splitAt((newIndex > oldIndex) ? (newIndex + 1) : newIndex, mapIndexed((index, item) => {\n if (index === oldIndex) {\n return undefined;\n }\n else {\n return some(item);\n }\n }, items)), concat([patternInput[0], [some(itemTobeMoved)], patternInput[1]]))));\n}\n\n","// extracted by mini-css-extract-plugin\nexport default {\"cards\":\"Ks8wKNQRlPsgHerb5I2f\"};","import React from \"react\";\nimport * as react from \"react\";\nimport { defaultArg, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { Indent } from \"@stenajs-webui/core\";\n\nexport function IndentModule_View(indentModule_ViewInputProps) {\n const p = indentModule_ViewInputProps.p;\n const props = {\n num: map((x) => x, FSharpMap__TryFind(p, \"num\")),\n };\n const children = defaultArg(map((x_1) => x_1, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Indent, props, ...children);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { map, defaultArg } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { Spacing } from \"@stenajs-webui/core\";\n\nexport function SpacingModule_View(spacingModule_ViewInputProps) {\n const p = spacingModule_ViewInputProps.p;\n const props = {};\n const children = defaultArg(map((x) => x, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Spacing, props, ...children);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { defaultArg, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { Column } from \"@stenajs-webui/core\";\n\nexport function ColumnModule_View(columnModule_ViewInputProps) {\n const p = columnModule_ViewInputProps.p;\n let props;\n const width = map((x) => x, FSharpMap__TryFind(p, \"width\"));\n const height = map((x_1) => x_1, FSharpMap__TryFind(p, \"height\"));\n const alignItems = map((x_2) => x_2, FSharpMap__TryFind(p, \"alignItems\"));\n const justifyContent = map((x_3) => x_3, FSharpMap__TryFind(p, \"justifyContent\"));\n props = {\n alignItems: alignItems,\n gap: map((x_4) => x_4, FSharpMap__TryFind(p, \"gap\")),\n height: height,\n justifyContent: justifyContent,\n width: width,\n };\n const children = defaultArg(map((x_5) => x_5, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Column, props, ...children);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { defaultArg, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { Row } from \"@stenajs-webui/core\";\n\nexport function RowModule_View(rowModule_ViewInputProps) {\n const p = rowModule_ViewInputProps.p;\n let props;\n const justifyContent = map((x) => x, FSharpMap__TryFind(p, \"justifyContent\"));\n props = {\n flex: map((x_1) => x_1, FSharpMap__TryFind(p, \"flex\")),\n height: map((x_2) => x_2, FSharpMap__TryFind(p, \"height\")),\n justifyContent: justifyContent,\n };\n const children = defaultArg(map((x_3) => x_3, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Row, props, ...children);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { map, defaultArg } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { Space } from \"@stenajs-webui/core\";\n\nexport function SpaceModule_View(spaceModule_ViewInputProps) {\n const p = spaceModule_ViewInputProps.p;\n const props = {};\n const children = defaultArg(map((x) => x, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Space, props, ...children);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { LoadingScreen } from \"@stenajs-webui/panels\";\n\nexport function LoadingScreenModule_View(loadingScreenModule_ViewInputProps) {\n const p = loadingScreenModule_ViewInputProps.p;\n const props = {\n text: map((x) => x, FSharpMap__TryFind(p, \"text\")),\n };\n return react.createElement(LoadingScreen, props);\n}\n\n","import Vessels$002Emodule from \"../../src/StenaWeather.WeatherServiceUI.Client/Pages/Vessels.module.scss\";\nimport { ofArray, length, tryFindBack, where, singleton, empty, map } from \"../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { join } from \"../fable_modules/fable-library-js.4.19.3/String.js\";\nimport { Record, Union } from \"../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { Response_SessionType, Response_VesselInfo_$reflection } from \"../StenaWeather.WeatherServiceUI.Shared/Vessels/API.js\";\nimport { record_type, bool_type, union_type, list_type } from \"../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { ServerError_$reflection } from \"../StenaWeather.WeatherServiceUI.Shared/Errors.js\";\nimport { FSharpResult$2 } from \"../fable_modules/fable-library-js.4.19.3/Result.js\";\nimport { PageTitle_title, ErrorView_Cmd_ofError } from \"../SharedView.js\";\nimport { Cmd_none } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { onVesselsAPI, Cmd_OfAsync_eitherAsResult } from \"../Server.js\";\nimport { comparePrimitives, equals } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { ofList } from \"../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty as empty_1, collect, singleton as singleton_1, append, delay, toList } from \"../fable_modules/fable-library-js.4.19.3/Seq.js\";\nimport { TextModule_View } from \"../Components/StenaWebUI/Core/Text.js\";\nimport { TextVariant, TextSize } from \"../Components/StenaWebUI/Core/Text.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport { IndentModule_View } from \"../Components/StenaWebUI/Core/Indent.js\";\nimport { SpacingModule_View } from \"../Components/StenaWebUI/Core/Spacing.js\";\nimport { ColumnModule_View } from \"../Components/StenaWebUI/Core/Column.js\";\nimport { ButtonBase_ViewPrimary, ButtonBase_ViewFlat } from \"../Components/StenaWebUI/Elements/Button.js\";\nimport { ButtonSize } from \"../Components/StenaWebUI/Elements/Button.js\";\nimport { RowModule_View } from \"../Components/StenaWebUI/Core/Row.js\";\nimport { BoxModule_View } from \"../Components/StenaWebUI/Core/Box.js\";\nimport { formatToWholeUnits } from \"../TimeSpan.js\";\nimport { now, op_Subtraction } from \"../fable_modules/fable-library-js.4.19.3/DateOffset.js\";\nimport { Page, Router_navigatePage } from \"../Router.js\";\nimport { IconModule_View } from \"../Components/StenaWebUI/Icons/Icon.js\";\nimport { faInfoCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { SpaceModule_View } from \"../Components/StenaWebUI/Core/Space.js\";\nimport { value as value_42 } from \"../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { defaultOf } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { React_useElmish_Z6C327F2E } from \"../fable_modules/Feliz.UseElmish.2.5.0/UseElmish.fs.js\";\nimport { ProgramModule_mkProgram } from \"../fable_modules/Fable.Elmish.4.2.0/program.fs.js\";\nimport { LoadingScreenModule_View } from \"../Components/StenaWebUI/Panels/LoadingScreen.js\";\nimport { reactApi } from \"../fable_modules/Feliz.2.8.0/Interop.fs.js\";\n\nexport const cn = (() => {\n const styles = Vessels$002Emodule;\n const cnFn = (name) => (styles[name]);\n const cnFns = (names) => map((x) => (styles[x]), names);\n return {\n className: cnFn,\n classes: cnFns,\n prop: {\n className: (arg) => [\"className\", cnFn(arg)],\n classes: (arg_1) => [\"className\", join(\" \", cnFns(arg_1))],\n },\n };\n})();\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"LoadVessels\", \"OnVesselsLoaded\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.Vessels.Msg\", [], Msg, () => [[], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [list_type(Response_VesselInfo_$reflection()), ServerError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", list_type(Response_VesselInfo_$reflection())]], [[\"ErrorValue\", ServerError_$reflection()]]])]]]);\n}\n\nexport class State extends Record {\n constructor(Vessels, IsLoading) {\n super();\n this.Vessels = Vessels;\n this.IsLoading = IsLoading;\n }\n}\n\nexport function State_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.Vessels.State\", [], State, () => [[\"Vessels\", list_type(Response_VesselInfo_$reflection())], [\"IsLoading\", bool_type]]);\n}\n\nexport const init = [new State(empty(), false), singleton((dispatch) => {\n dispatch(new Msg(0, []));\n})];\n\nexport function update(msg, state) {\n if (msg.tag === 1) {\n const vessels = msg.fields[0];\n if (vessels.tag === 1) {\n return [new State(state.Vessels, false), ErrorView_Cmd_ofError(vessels.fields[0])];\n }\n else {\n return [new State(vessels.fields[0], false), Cmd_none()];\n }\n }\n else {\n return [new State(state.Vessels, true), Cmd_OfAsync_eitherAsResult(() => onVesselsAPI((x) => x.GetVesselsInfo()), (Item) => (new Msg(1, [Item])))];\n }\n}\n\nexport function vesselBox(vessel) {\n let p_1_36;\n const visibleSessions = where((f) => equals(f.SessionType, new Response_SessionType(0, [])), vessel.Sessions);\n const historicalSession = tryFindBack((f_1) => equals(f_1.SessionType, new Response_SessionType(1, [])), vessel.Sessions);\n const p_1_37 = ofList(map((value_41) => value_41, ofArray([[\"shadow\", \"box\"], [\"background\", (length(visibleSessions) > 0) ? \"white\" : \"#eaeaea\"], [\"children\", singleton((p_1_36 = ofList(map((value_40) => value_40, ofArray([[\"width\", \"350px\"], [\"height\", \"100%\"], [\"children\", toList(delay(() => {\n let p_1_13, p_1_12, p_1_6, p_1_5, p_1_3, p_1_11, p_1_9;\n return append(singleton_1((p_1_13 = ofList(map((value_13) => value_13, ofArray([[\"background\", \"#eaeaea\"], [\"children\", singleton((p_1_12 = ofList(map((value_12) => value_12, ofArray([[\"justifyContent\", \"space-between\"], [\"children\", ofArray([(p_1_6 = ofList(map((value_6) => value_6, ofArray([[\"justifyContent\", \"center\"], [\"children\", singleton((p_1_5 = ofList(map((value_5) => value_5, singleton([\"children\", singleton((p_1_3 = ofList(map((value_3) => value_3, singleton([\"children\", singleton(TextModule_View(ofList(map((value_1) => value_1, ofArray([[\"children\", vessel.VesselName], [\"size\", new TextSize(0, [])], [\"variant\", new TextVariant(3, [])]])), {\n Compare: comparePrimitives,\n })))])), {\n Compare: comparePrimitives,\n }), createElement(IndentModule_View, {\n p: p_1_3,\n })))])), {\n Compare: comparePrimitives,\n }), createElement(SpacingModule_View, {\n p: p_1_5,\n })))]])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_6,\n })), (p_1_11 = ofList(map((value_11) => value_11, singleton([\"children\", singleton((p_1_9 = ofList(map((value_9) => value_9, singleton([\"children\", singleton(ButtonBase_ViewFlat(ofList(map((value_7) => value_7, ofArray([[\"label\", \"Data consumption\"], [\"size\", new ButtonSize(2, [])]])), {\n Compare: comparePrimitives,\n })))])), {\n Compare: comparePrimitives,\n }), createElement(IndentModule_View, {\n p: p_1_9,\n })))])), {\n Compare: comparePrimitives,\n }), createElement(SpacingModule_View, {\n p: p_1_11,\n }))])]])), {\n Compare: comparePrimitives,\n }), createElement(RowModule_View, {\n p: p_1_12,\n })))]])), {\n Compare: comparePrimitives,\n }), createElement(BoxModule_View, {\n p: p_1_13,\n }))), delay(() => {\n let p_1_23, p_1_22, p_1_35, p_1_34, p_1_27, t_29, p_1_28, p_1_33, p_1_30, p_1_32, p_1_31;\n return (length(visibleSessions) > 0) ? singleton_1((p_1_23 = ofList(map((value_25) => value_25, ofArray([[\"spacing\", 1], [\"indent\", 1], [\"children\", singleton((p_1_22 = ofList(map((value_24) => value_24, ofArray([[\"gap\", true], [\"justifyContent\", \"space-between\"], [\"children\", toList(delay(() => {\n let p_1_16;\n return append(singleton_1((p_1_16 = ofList(map((value_17) => value_17, singleton([\"children\", singleton(TextModule_View(ofList(map((value_15) => value_15, ofArray([[\"color\", \"#a8a8a8\"], [\"children\", \"Open sessions\"]])), {\n Compare: comparePrimitives,\n })))])), {\n Compare: comparePrimitives,\n }), createElement(SpacingModule_View, {\n p: p_1_16,\n }))), delay(() => collect((session) => {\n let p_1_21, p_1_18, p_1_20, p_1_19;\n return singleton_1((p_1_21 = ofList(map((value_23) => value_23, ofArray([[\"height\", \"100%\"], [\"justifyContent\", \"space-between\"], [\"children\", ofArray([(p_1_18 = ofList(map((value_20) => value_20, ofArray([[\"alignItems\", \"center\"], [\"children\", singleton(TextModule_View(ofList(map((value_19) => value_19, singleton([\"children\", `Initiated ${formatToWholeUnits(op_Subtraction(now(), session.CreatedAt))} ago`])), {\n Compare: comparePrimitives,\n })))]])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_18,\n })), (p_1_20 = ofList(map((value_22) => value_22, ofArray([[\"justifyContent\", \"flex-end\"], [\"children\", singleton((p_1_19 = ofList(map((value_21) => value_21, ofArray([[\"id\", \"showOnMapButton\"], [\"label\", \"Show on map\"], [\"size\", new ButtonSize(2, [])], [\"onClick\", (_arg) => {\n Router_navigatePage(new Page(2, [session.SessionId]));\n }]])), {\n Compare: comparePrimitives,\n }), createElement(ButtonBase_ViewPrimary, {\n p: p_1_19,\n })))]])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_20,\n }))])]])), {\n Compare: comparePrimitives,\n }), createElement(RowModule_View, {\n p: p_1_21,\n })));\n }, visibleSessions)));\n }))]])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_22,\n })))]])), {\n Compare: comparePrimitives,\n }), createElement(BoxModule_View, {\n p: p_1_23,\n }))) : singleton_1((p_1_35 = ofList(map((value_39) => value_39, ofArray([[\"indent\", 1], [\"spacing\", 1], [\"height\", \"100%\"], [\"children\", singleton((p_1_34 = ofList(map((value_38) => value_38, ofArray([[\"height\", \"100%\"], [\"children\", ofArray([(p_1_27 = ofList(map((value_30) => value_30, singleton([\"children\", ofArray([IconModule_View(ofList(map((value_26) => value_26, ofArray([(t_29 = faInfoCircle, [\"icon\", t_29]), [\"size\", 15]])), {\n Compare: comparePrimitives,\n })), TextModule_View(ofList(map((value_28) => value_28, ofArray([[\"children\", `${vessel.VesselName} doesn't have any open sessions at this moment`], [\"variant\", new TextVariant(0, [])]])), {\n Compare: comparePrimitives,\n }))])])), {\n Compare: comparePrimitives,\n }), createElement(IndentModule_View, {\n p: p_1_27,\n })), (p_1_28 = ofList(map((value_31) => value_31, empty()), {\n Compare: comparePrimitives,\n }), createElement(SpaceModule_View, {\n p: p_1_28,\n })), (p_1_33 = ofList(map((value_37) => value_37, ofArray([[\"justifyContent\", \"space-between\"], [\"height\", \"100%\"], [\"children\", ofArray([(p_1_30 = ofList(map((value_34) => value_34, singleton([\"children\", toList(delay(() => ((historicalSession != null) ? singleton_1(TextModule_View(ofList(map((value_33) => value_33, singleton([\"children\", `Initiated ${formatToWholeUnits(op_Subtraction(now(), value_42(historicalSession).CreatedAt))} ago`])), {\n Compare: comparePrimitives,\n }))) : singleton_1(defaultOf()))))])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_30,\n })), (p_1_32 = ofList(map((value_36) => value_36, ofArray([[\"justifyContent\", \"flex-end\"], [\"children\", singleton((p_1_31 = ofList(map((value_35) => value_35, toList(delay(() => append(singleton_1([\"id\", \"showOnMapButton\"]), delay(() => append(singleton_1([\"label\", \"Show historical data\"]), delay(() => append(singleton_1([\"size\", new ButtonSize(2, [])]), delay(() => append((historicalSession == null) ? append(singleton_1([\"disabled\", true]), delay(() => singleton_1([\"label\", \"No historical data\"]))) : empty_1(), delay(() => singleton_1([\"onClick\", (_arg_1) => {\n if (historicalSession != null) {\n Router_navigatePage(new Page(2, [value_42(historicalSession).SessionId]));\n }\n }])))))))))))), {\n Compare: comparePrimitives,\n }), createElement(ButtonBase_ViewPrimary, {\n p: p_1_31,\n })))]])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_32,\n }))])]])), {\n Compare: comparePrimitives,\n }), createElement(RowModule_View, {\n p: p_1_33,\n }))])]])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_34,\n })))]])), {\n Compare: comparePrimitives,\n }), createElement(BoxModule_View, {\n p: p_1_35,\n })));\n }));\n }))]])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_36,\n })))]])), {\n Compare: comparePrimitives,\n });\n return createElement(BoxModule_View, {\n p: p_1_37,\n });\n}\n\nexport function VesselsView() {\n const state_1 = React_useElmish_Z6C327F2E(() => ProgramModule_mkProgram(() => init, update, (_arg, _arg_1) => {\n }), undefined, [])[0];\n const children = toList(delay(() => append(singleton_1(PageTitle_title(\"List of Vessels\", \"Choose vessel to display all details or click on current session if exists\")), delay(() => {\n let p_1_1, elm;\n return state_1.IsLoading ? singleton_1((p_1_1 = ofList(map((value) => value, singleton([\"text\", \"Loading vessels...\"])), {\n Compare: comparePrimitives,\n }), createElement(LoadingScreenModule_View, {\n p: p_1_1,\n }))) : singleton_1((elm = toList(delay(() => map(vesselBox, state_1.Vessels))), createElement(\"div\", {\n className: cn.className(\"cards\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n })));\n }))));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\n","import { toList, toArray, map, filter, delay } from \"./Seq.js\";\nimport { HashSet } from \"./MutableSet.js\";\nimport { defaultOf, disposeSafe, getEnumerator } from \"./Util.js\";\nimport { addToDict, getItemFromDict, tryGetValue, addToSet } from \"./MapUtil.js\";\nimport { Dictionary } from \"./MutableMap.js\";\nimport { FSharpRef } from \"./Types.js\";\nexport function distinct(xs, comparer) {\n return delay(() => {\n const hashSet = new HashSet([], comparer);\n return filter((x) => addToSet(x, hashSet), xs);\n });\n}\nexport function distinctBy(projection, xs, comparer) {\n return delay(() => {\n const hashSet = new HashSet([], comparer);\n return filter((x) => addToSet(projection(x), hashSet), xs);\n });\n}\nexport function except(itemsToExclude, xs, comparer) {\n return delay(() => {\n const hashSet = new HashSet(itemsToExclude, comparer);\n return filter((x) => addToSet(x, hashSet), xs);\n });\n}\nexport function countBy(projection, xs, comparer) {\n return delay(() => {\n const dict = new Dictionary([], comparer);\n const keys = [];\n const enumerator = getEnumerator(xs);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const key = projection(enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n let matchValue;\n let outArg = 0;\n matchValue = [tryGetValue(dict, key, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n if (matchValue[0]) {\n dict.set(key, matchValue[1] + 1);\n }\n else {\n dict.set(key, 1);\n void (keys.push(key));\n }\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return map((key_1) => [key_1, getItemFromDict(dict, key_1)], keys);\n });\n}\nexport function groupBy(projection, xs, comparer) {\n return delay(() => {\n const dict = new Dictionary([], comparer);\n const keys = [];\n const enumerator = getEnumerator(xs);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const x = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n const key = projection(x);\n let matchValue;\n let outArg = defaultOf();\n matchValue = [tryGetValue(dict, key, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n void (matchValue[1].push(x));\n }\n else {\n addToDict(dict, key, [x]);\n void (keys.push(key));\n }\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return map((key_1) => [key_1, getItemFromDict(dict, key_1)], keys);\n });\n}\nexport function Array_distinct(xs, comparer) {\n return toArray(distinct(xs, comparer));\n}\nexport function Array_distinctBy(projection, xs, comparer) {\n return toArray(distinctBy(projection, xs, comparer));\n}\nexport function Array_except(itemsToExclude, xs, comparer) {\n return toArray(except(itemsToExclude, xs, comparer));\n}\nexport function Array_countBy(projection, xs, comparer) {\n return toArray(countBy(projection, xs, comparer));\n}\nexport function Array_groupBy(projection, xs, comparer) {\n return toArray(map((tupledArg) => [tupledArg[0], toArray(tupledArg[1])], groupBy(projection, xs, comparer)));\n}\nexport function List_distinct(xs, comparer) {\n return toList(distinct(xs, comparer));\n}\nexport function List_distinctBy(projection, xs, comparer) {\n return toList(distinctBy(projection, xs, comparer));\n}\nexport function List_except(itemsToExclude, xs, comparer) {\n return toList(except(itemsToExclude, xs, comparer));\n}\nexport function List_countBy(projection, xs, comparer) {\n return toList(countBy(projection, xs, comparer));\n}\nexport function List_groupBy(projection, xs, comparer) {\n return toList(map((tupledArg) => [tupledArg[0], toList(tupledArg[1])], groupBy(projection, xs, comparer)));\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"cell\":\"RtI1n4AQ3tosnc_e7u0U\",\"sessionDetails\":\"CuIivybKVNQq16ozDJwx\",\"sessionHistory\":\"GqjNj0ECn1UOOZf53giD\",\"sessionHistoryHeader\":\"p51sjXjodyB29_8H2HLR\",\"sessionHistoryItem\":\"UXVYHAAxx2wbeygjkBNP\",\"sessionHistoryItemRight\":\"Y2RE1ecym7yIxxqI4qbz\",\"upperPart\":\"RKAADiWbbUrqJzGKqgvi\",\"boxes\":\"FhYVFeZ723rojVp8FNQ_\",\"box\":\"FwJTm8n2T5qXPZGpsk6x\",\"table\":\"OfpgRoonipZlziuv5uaA\",\"historyButton\":\"ZQ3fekYnWyTr6unpAbCb\",\"heading-wrapper\":\"wIRMwgTyMjVMvGkDB4dJ\",\"popup-header\":\"UozaoV8Z0MOjfnBO4eQu\",\"heading-icon\":\"yoF7osYVODkLpceAeWes\",\"map\":\"w8GTfUFqNxunXfcqqLcT\",\"wind-switch\":\"hs4IBX8DVZNTS5Ehsq6Q\",\"label-switch-div\":\"wOIwR7tthswrmFJpWYgi\"};","import React from \"react\";\nimport * as react from \"react\";\nimport { map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { Chip } from \"@stenajs-webui/elements\";\n\nexport function ChipModule_View(chipModule_ViewInputProps) {\n const p = chipModule_ViewInputProps.p;\n let props;\n const className = map((x) => x, FSharpMap__TryFind(p, \"className\"));\n const onClick = map((x_1) => x_1, FSharpMap__TryFind(p, \"onClick\"));\n const onClickRemove = map((x_2) => x_2, FSharpMap__TryFind(p, \"onClickRemove\"));\n props = {\n className: className,\n label: map((x_3) => x_3, FSharpMap__TryFind(p, \"label\")),\n onClick: onClick,\n onClickRemove: onClickRemove,\n variant: map((x_4) => x_4, FSharpMap__TryFind(p, \"variant\")),\n };\n return react.createElement(Chip, props);\n}\n\n","import { format } from \"../fable_modules/fable-library-js.4.19.3/String.js\";\nimport { DateTimeOffset_dateTimeStr, DateTimeOffset_timeStr, cn as cn_2, DateTimeOffset_adjustFromContext } from \"../Components/TimeZones/Components.js\";\nimport { TextModule_View } from \"../Components/StenaWebUI/Core/Text.js\";\nimport { ofList } from \"../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { singleton, ofArray, map } from \"../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { WhiteSpaceType, UserSelectType, TextSize, TextVariant } from \"../Components/StenaWebUI/Core/Text.js\";\nimport { comparePrimitives } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { createElement } from \"react\";\nimport { reactApi } from \"../fable_modules/Feliz.2.8.0/Interop.fs.js\";\nimport { timeZoneContext } from \"../Components/TimeZones/Context.js\";\nimport { ChipModule_View } from \"../Components/StenaWebUI/Elements/Chip.js\";\n\nexport function round(x) {\n return format('{0:' + \"0\" + '}', x);\n}\n\nexport function rotateDirection180(x) {\n return x + ((x < 180) ? 180 : -180);\n}\n\nexport function timeInContext(ctx, strF, time) {\n return strF(DateTimeOffset_adjustFromContext(ctx, time));\n}\n\nexport function DivsForStandardTable_defaultDiv(value) {\n const children = singleton(TextModule_View(ofList(map((value_2) => value_2, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(1, [])], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", value]])), {\n Compare: comparePrimitives,\n })));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nfunction DivsForStandardTable_timeChip(strF, time) {\n let p_1_1;\n const ctx = reactApi.useContext(timeZoneContext);\n return createElement(\"div\", {\n className: cn_2.className(\"timeCell\"),\n children: (p_1_1 = ofList(map((value_4) => value_4, ofArray([[\"label\", timeInContext(ctx, strF, time)], [\"variant\", \"secondary\"]])), {\n Compare: comparePrimitives,\n }), createElement(ChipModule_View, {\n p: p_1_1,\n })),\n });\n}\n\nexport function DivsForStandardTable_timeDiv(time) {\n return DivsForStandardTable_timeChip(DateTimeOffset_timeStr, time);\n}\n\nexport function DivsForStandardTable_dateTimeDiv(time) {\n return DivsForStandardTable_timeChip(DateTimeOffset_dateTimeStr, time);\n}\n\n","import { Union } from \"../../../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { union_type } from \"../../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { defaultArg, unwrap, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport * as react from \"react\";\nimport { Tooltip } from \"@stenajs-webui/tooltip\";\n\nexport class TooltipVariant extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Standard\", \"Info\", \"Warning\", \"Error\", \"Outlined\"];\n }\n}\n\nexport function TooltipVariant_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Elements.TooltipVariant\", [], TooltipVariant, () => [[], [], [], [], []]);\n}\n\nexport function TooltipVariantModule_value(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"info\";\n case 2:\n return \"warning\";\n case 3:\n return \"error\";\n case 4:\n return \"outlined\";\n default:\n return \"standard\";\n }\n}\n\nexport function TooltipModule_View(p) {\n let props;\n const placement = map((x) => x, FSharpMap__TryFind(p, \"placement\"));\n const label = map((x_1) => x_1, FSharpMap__TryFind(p, \"label\"));\n const variant = map(TooltipVariantModule_value, map((x_2) => x_2, FSharpMap__TryFind(p, \"variant\")));\n props = {\n disablePadding: map((x_3) => x_3, FSharpMap__TryFind(p, \"disablePadding\")),\n label: label,\n placement: placement,\n variant: unwrap(variant),\n };\n const children = defaultArg(map((x_4) => x_4, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Tooltip, props, ...children);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { defaultArg, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { SeparatorLine } from \"@stenajs-webui/core\";\n\nexport function SeparatorLineModule_View(separatorLineModule_ViewInputProps) {\n const p = separatorLineModule_ViewInputProps.p;\n let props;\n const color = map((x) => x, FSharpMap__TryFind(p, \"color\"));\n const width = map((x_1) => x_1, FSharpMap__TryFind(p, \"width\"));\n const vertical = map((x_2) => x_2, FSharpMap__TryFind(p, \"vertical\"));\n props = {\n color: color,\n size: map((x_3) => x_3, FSharpMap__TryFind(p, \"size\")),\n vertical: vertical,\n width: width,\n };\n const children = defaultArg(map((x_4) => x_4, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(SeparatorLine, props, ...children);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { defaultArg, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { Label } from \"@stenajs-webui/elements\";\n\nexport function LabelModule_View(labelModule_ViewInputProps) {\n const p = labelModule_ViewInputProps.p;\n let props;\n const text = map((x) => x, FSharpMap__TryFind(p, \"text\"));\n const background = map((x_1) => x_1, FSharpMap__TryFind(p, \"background\"));\n const optional = map((x_2) => x_2, FSharpMap__TryFind(p, \"optional\"));\n props = {\n background: background,\n maxCharacters: map((x_3) => x_3, FSharpMap__TryFind(p, \"maxCharacters\")),\n optional: optional,\n text: text,\n textWidth: map((x_4) => x_4, FSharpMap__TryFind(p, \"textWidth\")),\n };\n const children = defaultArg(map((x_5) => x_5, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Label, props, ...children);\n}\n\n","export default __webpack_public_path__ + \"6bffbe898a51e127ce89211e9271cb46.svg\";","import React from \"react\";\nimport * as react from \"react\";\nimport { map } from \"../../fable_modules/fable-library-js.4.19.3/Array.js\";\nimport { Point_toPosition } from \"./Shared.js\";\nimport { empty, toArray } from \"../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { map as map_1, defaultArg } from \"../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { Polyline } from \"react-leaflet\";\n\nexport function Polyline_View(polyline_ViewInputProps) {\n let color, dashArray, weight;\n const p = polyline_ViewInputProps.p;\n let props;\n const positions = map(Point_toPosition, toArray(defaultArg(map_1((x) => x, FSharpMap__TryFind(p, \"points\")), empty())));\n props = {\n pathOptions: (color = map_1((x_1) => x_1, FSharpMap__TryFind(p, \"color\")), (dashArray = map_1((x_2) => x_2, FSharpMap__TryFind(p, \"dashArray\")), (weight = (defaultArg(map_1((x_3) => x_3, FSharpMap__TryFind(p, \"weight\")), 3) | 0), {\n color: color,\n dashArray: dashArray,\n fillOpacity: defaultArg(map_1((x_4) => x_4, FSharpMap__TryFind(p, \"fillOpacity\")), 0.25),\n weight: weight,\n }))),\n positions: positions,\n };\n return react.createElement(Polyline, props);\n}\n\n","import { createLayerComponent } from '@react-leaflet/core';\nimport { RotatedMarker as LeafletMarker } from 'leaflet-marker-rotation';\nexport const RotatedMarker = createLayerComponent(function createMarker({\n position,\n ...options\n }, ctx) {\n const instance = new LeafletMarker(position, options);\n return {\n instance,\n context: { ...ctx,\n overlayContainer: instance\n }\n };\n}, function updateMarker(marker, props, prevProps) {\n if (props.position !== prevProps.position) {\n marker.setLatLng(props.position);\n }\n\n if (props.icon != null && props.icon !== prevProps.icon) {\n marker.setIcon(props.icon);\n }\n\n if (props.zIndexOffset != null && props.zIndexOffset !== prevProps.zIndexOffset) {\n marker.setZIndexOffset(props.zIndexOffset);\n }\n\n if (props.opacity != null && props.opacity !== prevProps.opacity) {\n marker.setOpacity(props.opacity);\n }\n\n if (props.rotationAngle != null && props.rotationAngle !== prevProps.rotationAngle) {\n marker.setRotationAngle(props.rotationAngle);\n }\n\n if (props.rotationOrigin != null && props.rotationOrigin !== prevProps.rotationOrigin) {\n marker.setRotationOrigin(props.rotationOrigin);\n }\n\n if (marker.dragging != null && props.draggable !== prevProps.draggable) {\n if (props.draggable === true) {\n marker.dragging.enable();\n } else {\n marker.dragging.disable();\n }\n }\n});","import React from \"react\";\nimport * as react from \"react\";\nimport { defaultArg, unwrap, map } from \"../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { Point_toPosition } from \"./Shared.js\";\nimport { FSharpMap__TryFind } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { RotatedMarker } from \"../../../src/StenaWeather.WeatherServiceUI.Client/Components/Leaflet/RotatedMarker.js\";\n\nexport function Marker_View(marker_ViewInputProps) {\n const p = marker_ViewInputProps.p;\n let props;\n const position = map(Point_toPosition, map((x) => x, FSharpMap__TryFind(p, \"position\")));\n props = {\n icon: map((x_1) => x_1, FSharpMap__TryFind(p, \"icon\")),\n position: unwrap(position),\n rotationAngle: map((x_2) => x_2, FSharpMap__TryFind(p, \"rotationAngle\")),\n rotationOrigin: map((x_3) => x_3, FSharpMap__TryFind(p, \"rotationOrigin\")),\n };\n const children = defaultArg(map((x_4) => x_4, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(RotatedMarker, props, ...children);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { map, defaultArg } from \"../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { PointModule_createLonLat } from \"../../StenaWeather.Domain/Forecast.js\";\nimport { FSharpMap__TryFind } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { FeatureGroup } from \"react-leaflet\";\n\nexport function FeatureGroup_View(featureGroup_ViewInputProps) {\n const p = featureGroup_ViewInputProps.p;\n const props = {\n eventHandlers: {\n click: defaultArg(map((fn) => ((args) => {\n fn(PointModule_createLonLat(args.latlng.lng, args.latlng.lat));\n }), map((x) => x, FSharpMap__TryFind(p, \"onClick\"))), (value) => {\n }),\n },\n };\n const children = defaultArg(map((x_1) => x_1, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(FeatureGroup, props, ...children);\n}\n\n","import React from \"react\";\nimport * as react from \"react\";\nimport { defaultArg, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { CollapsibleContent, Collapsible } from \"@stenajs-webui/panels\";\n\nexport function CollapsibleModule_View(collapsibleModule_ViewInputProps) {\n const p = collapsibleModule_ViewInputProps.p;\n let props;\n const label = map((x) => x, FSharpMap__TryFind(p, \"label\"));\n props = {\n collapsed: map((x_1) => x_1, FSharpMap__TryFind(p, \"collapsed\")),\n label: label,\n onClick: map((x_2) => x_2, FSharpMap__TryFind(p, \"onClick\")),\n };\n const children = defaultArg(map((x_3) => x_3, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Collapsible, props, ...children);\n}\n\nexport function CollapsibleContentModule_View(collapsibleContentModule_ViewInputProps) {\n const p = collapsibleContentModule_ViewInputProps.p;\n const props = {\n contentLeft: map((x) => x, FSharpMap__TryFind(p, \"contentLeft\")),\n contentRight: map((x_1) => x_1, FSharpMap__TryFind(p, \"contentRight\")),\n };\n const children = defaultArg(map((x_2) => x_2, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(CollapsibleContent, props, ...children);\n}\n\n","import * as React from \"react\";\nimport { Crumb } from \"@stenajs-webui/elements\";\n\nclass ReactRouterCrumbComponent extends React.Component {\n render() {\n return (\n \n );\n }\n}\n\nexport default ReactRouterCrumbComponent;","import React from \"react\";\nimport * as react from \"react\";\nimport { map, defaultArg } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { Crumb as Crumb_1, BreadCrumbs } from \"@stenajs-webui/elements\";\nimport ReactRouterCrumbComponent from \"../../../../src/StenaWeather.WeatherServiceUI.Client/Components/StenaWebUI/Elements/ReactRouterCrumbComponent\";\nimport { class_type } from \"../../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\n\nexport function BreadCrumbsModule_View(breadCrumbsModule_ViewInputProps) {\n const p = breadCrumbsModule_ViewInputProps.p;\n const props = {};\n const children = defaultArg(map((x) => x, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(BreadCrumbs, props, ...children);\n}\n\nexport function CrumbModule_View(crumbModule_ViewInputProps) {\n const p = crumbModule_ViewInputProps.p;\n const props = {\n label: map((x) => x, FSharpMap__TryFind(p, \"label\")),\n render: map((x_1) => x_1, FSharpMap__TryFind(p, \"render\")),\n };\n return react.createElement(Crumb_1, props);\n}\n\nexport function ReactRouterCrumb_View(reactRouterCrumb_ViewInputProps) {\n const p = reactRouterCrumb_ViewInputProps.p;\n const l = map((x) => x, FSharpMap__TryFind(p, \"label\"));\n const d = map((x_1) => x_1, FSharpMap__TryFind(p, \"dest\"));\n let props;\n const label = map((x_2) => x_2, FSharpMap__TryFind(p, \"label\"));\n props = {\n dest: map((x_3) => x_3, FSharpMap__TryFind(p, \"dest\")),\n label: label,\n };\n return react.createElement(ReactRouterCrumbComponent, props);\n}\n\nexport class Crumb {\n constructor() {\n }\n}\n\nexport function Crumb_$reflection() {\n return class_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Elements.Crumb\", undefined, Crumb);\n}\n\n","import { defaultArg, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport * as react from \"react\";\nimport { Drawer } from \"@stenajs-webui/modal\";\n\nexport function DrawerModule_view(p) {\n let props;\n const isOpen = map((x) => x, FSharpMap__TryFind(p, \"isOpen\"));\n const slideFrom = map((x_1) => x_1, FSharpMap__TryFind(p, \"slideFrom\"));\n const onRequestClose = map((x_2) => x_2, FSharpMap__TryFind(p, \"onRequestClose\"));\n props = {\n background: map((x_3) => x_3, FSharpMap__TryFind(p, \"background\")),\n isOpen: isOpen,\n onRequestClose: onRequestClose,\n portalTarget: map((x_4) => x_4, FSharpMap__TryFind(p, \"portalTarget\")),\n slideFrom: slideFrom,\n width: map((x_5) => x_5, FSharpMap__TryFind(p, \"width\")),\n zIndex: map((x_6) => x_6, FSharpMap__TryFind(p, \"zIndex\")),\n };\n const children = defaultArg(map((x_7) => x_7, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Drawer, props, ...children);\n}\n\n","import { unwrap, defaultArg, map as map_1, some } from \"../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { toString, FSharpRef, Record, Union } from \"../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { Response_RouteInterpolatedForecast, Response_SessionParamModelSetup_$reflection, Response_SessionState_$reflection, Response_SessionInterpolatedForecast_$reflection, Response_RouteWaypoint_$reflection, Response_RouteInterpolatedForecast_$reflection, Response_SessionDetail_$reflection } from \"../StenaWeather.WeatherServiceUI.Shared/SessionDetails/API.js\";\nimport { ServerError_$reflection } from \"../StenaWeather.WeatherServiceUI.Shared/Errors.js\";\nimport { FSharpResult$2 } from \"../fable_modules/fable-library-js.4.19.3/Result.js\";\nimport { getRecordElements, name as name_25, getUnionFields, getRecordField, array_type, option_type, string_type, record_type, bool_type, tuple_type, list_type, class_type, union_type } from \"../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { head as head_1, last, item as item_1, mapIndexed, filter, tryLast, minBy, fold, tryFind, where, empty, ofArray, length, append, map as map_2, tryHead, sortBy, sortByDescending, toArray, singleton } from \"../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { append as append_2, concat, find, map } from \"../fable_modules/fable-library-js.4.19.3/Array.js\";\nimport { List_groupBy } from \"../fable_modules/fable-library-js.4.19.3/Seq2.js\";\nimport { utcNow, date as date_1, fromDate } from \"../fable_modules/fable-library-js.4.19.3/DateOffset.js\";\nimport { compare, equals } from \"../fable_modules/fable-library-js.4.19.3/Date.js\";\nimport { equals as equals_1, createObj, comparePrimitives, compareArrays, dateHash } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { tryParse } from \"../fable_modules/fable-library-js.4.19.3/Int32.js\";\nimport { PageTitle_title, ErrorView_Cmd_error, ErrorView_Cmd_ofError } from \"../SharedView.js\";\nimport { onSessionDetailsAPI, Cmd_OfAsync_eitherAsResult } from \"../Server.js\";\nimport { Cmd_none } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport SessionDetails$002Emodule from \"../../src/StenaWeather.WeatherServiceUI.Client/Pages/SessionDetails.module.scss\";\nimport { toText, format, printf, toFail, join } from \"../fable_modules/fable-library-js.4.19.3/String.js\";\nimport { WeatherTypeModule_Parameter, WeatherTypeModule_ParameterModule_tryParse, WeatherTypeModule_declaringType, WeatherType_$reflection, WeatherTypeModule_ParameterModule_fromWeatherType, WeatherTypeModule_ParameterModule_metadata, WeatherTypeModule_ParameterModule_name } from \"../StenaWeather.Domain/Weather.js\";\nimport { DivsForStandardTable_timeDiv, rotateDirection180, DivsForStandardTable_defaultDiv } from \"./Common.js\";\nimport { TextModule_View } from \"../Components/StenaWebUI/Core/Text.js\";\nimport { ofSeq, add, values, FSharpMap__TryFind, ofList } from \"../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { WhiteSpaceType, UserSelectType, TextSize, TextVariant } from \"../Components/StenaWebUI/Core/Text.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport * as react from \"react\";\nimport { DateTimeOffset_dateTimeStr, DateTimeOffset_TimeWithTimezone, DateTimeOffset_adjustFromContext, DateTimeOffset_dateStr, DateTimeOffset_DateTimeWithTimezone } from \"../Components/TimeZones/Components.js\";\nimport { reactApi } from \"../fable_modules/Feliz.2.8.0/Interop.fs.js\";\nimport { TooltipModule_View } from \"../Components/StenaWebUI/Elements/Tooltip.js\";\nimport { IconModule_View } from \"../Components/StenaWebUI/Icons/Icon.js\";\nimport { faTimes, faCheckCircle, faBan, faLongArrowAltUp, faCloud, faCloudSun, faSun, faHourglassHalf } from \"@fortawesome/free-solid-svg-icons\";\nimport { IndentModule_View } from \"../Components/StenaWebUI/Core/Indent.js\";\nimport { SpaceModule_View } from \"../Components/StenaWebUI/Core/Space.js\";\nimport { RowModule_View } from \"../Components/StenaWebUI/Core/Row.js\";\nimport { ButtonBase_ViewFlat, ButtonBase_ViewPrimary, ButtonBase_ViewSecondary } from \"../Components/StenaWebUI/Elements/Button.js\";\nimport { ButtonSize } from \"../Components/StenaWebUI/Elements/Button.js\";\nimport { parse } from \"../fable_modules/fable-library-js.4.19.3/Double.js\";\nimport { toArray as toArray_1, map as map_3, fold as fold_1, empty as empty_1, collect, singleton as singleton_1, append as append_1, delay, toList, head } from \"../fable_modules/fable-library-js.4.19.3/Seq.js\";\nimport { PointModule_distance } from \"../StenaWeather.Domain/Forecast.js\";\nimport { HeadingModule_View } from \"../Components/StenaWebUI/Core/Heading.js\";\nimport { SeparatorLineModule_View } from \"../Components/StenaWebUI/Core/SeparatorLine.js\";\nimport { LabelModule_View } from \"../Components/StenaWebUI/Elements/Label.js\";\nimport { ColumnModule_View } from \"../Components/StenaWebUI/Core/Column.js\";\nimport { Popup_View } from \"../Components/Leaflet/Popup.js\";\nimport up_arrow from \"../../src/StenaWeather.WeatherServiceUI.Client/images/up-arrow.svg\";\nimport { bearing } from \"leaflet-geometryutil\";\nimport { Point_toPosition } from \"../Components/Leaflet/Shared.js\";\nimport { TileLayer } from \"react-leaflet\";\nimport { Polyline_View } from \"../Components/Leaflet/Polyline.js\";\nimport { Icon } from \"leaflet\";\nimport { Marker_View } from \"../Components/Leaflet/Marker.js\";\nimport { FeatureGroup_View } from \"../Components/Leaflet/FeatureGroup.js\";\nimport { defaultOf } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { MapContainer_View } from \"../Components/Leaflet/Container.js\";\nimport { timeZoneContext } from \"../Components/TimeZones/Context.js\";\nimport { CollapsibleModule_View } from \"../Components/StenaWebUI/Panels/Collapsible.js\";\nimport { ChipModule_View } from \"../Components/StenaWebUI/Elements/Chip.js\";\nimport { BannerModule_View } from \"../Components/StenaWebUI/Elements/Banner.js\";\nimport { React_useElmish_Z6C327F2E } from \"../fable_modules/Feliz.UseElmish.2.5.0/UseElmish.fs.js\";\nimport { ProgramModule_mkProgram } from \"../fable_modules/Fable.Elmish.4.2.0/program.fs.js\";\nimport { BreadCrumbsModule_View, CrumbModule_View, ReactRouterCrumb_View } from \"../Components/StenaWebUI/Elements/Breadcrumbs.js\";\nimport { SwitchWithLabelModule_View } from \"../Components/StenaWebUI/Forms/SwitchWithLabel.js\";\nimport { StandardTableModule_view } from \"../Components/StenaWebUI/Grid/StandardTable.js\";\nimport { DrawerModule_view } from \"../Components/StenaWebUI/Modal/Drawer.js\";\nimport { LoadingScreenModule_View } from \"../Components/StenaWebUI/Panels/LoadingScreen.js\";\n\nexport function fromTryMethod(f, x) {\n const patternInput = f(x);\n if (patternInput[0]) {\n return some(patternInput[1]);\n }\n else {\n return undefined;\n }\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"LoadSessionDetail\", \"OnSessionDetailLoaded\", \"LoadSessionResponse\", \"OnSessionResponseLoaded\", \"OnDisplayWayPointOnMap\", \"OnCloseDisplayedWaypoint\", \"ShowSessionHistory\", \"HideSessionHistory\", \"ChangeWindDirectionUnits\", \"ToggleSessionHistoryItem\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.SessionDetails.Msg\", [], Msg, () => [[], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [Response_SessionDetail_$reflection(), ServerError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", Response_SessionDetail_$reflection()]], [[\"ErrorValue\", ServerError_$reflection()]]])]], [[\"Item\", class_type(\"System.Guid\")]], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [Response_RouteInterpolatedForecast_$reflection(), ServerError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", Response_RouteInterpolatedForecast_$reflection()]], [[\"ErrorValue\", ServerError_$reflection()]]])]], [[\"Item\", tuple_type(Response_RouteWaypoint_$reflection(), list_type(Response_SessionInterpolatedForecast_$reflection()))]], [], [], [], [[\"Item\", bool_type]], [[\"Item\", class_type(\"System.DateTimeOffset\")]]]);\n}\n\nexport class Forecast extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Loading\", \"Unknown\", \"Loaded\"];\n }\n}\n\nexport function Forecast_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.SessionDetails.Forecast\", [], Forecast, () => [[], [], [[\"Item\", Response_RouteInterpolatedForecast_$reflection()]]]);\n}\n\nexport class SessionHistoryDay extends Record {\n constructor(Date$, IsCollapsed, Sessions) {\n super();\n this.Date = Date$;\n this.IsCollapsed = IsCollapsed;\n this.Sessions = Sessions;\n }\n}\n\nexport function SessionHistoryDay_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.SessionDetails.SessionHistoryDay\", [], SessionHistoryDay, () => [[\"Date\", class_type(\"System.DateTimeOffset\")], [\"IsCollapsed\", bool_type], [\"Sessions\", list_type(Response_SessionState_$reflection())]]);\n}\n\nexport class SessionDetail extends Record {\n constructor(VesselName, CreatedAt, Parameters, Waypoints) {\n super();\n this.VesselName = VesselName;\n this.CreatedAt = CreatedAt;\n this.Parameters = Parameters;\n this.Waypoints = Waypoints;\n }\n}\n\nexport function SessionDetail_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.SessionDetails.SessionDetail\", [], SessionDetail, () => [[\"VesselName\", string_type], [\"CreatedAt\", class_type(\"System.DateTimeOffset\")], [\"Parameters\", list_type(Response_SessionParamModelSetup_$reflection())], [\"Waypoints\", list_type(Response_RouteWaypoint_$reflection())]]);\n}\n\nexport class State extends Record {\n constructor(SessionId, Detail, SessionHistory, SelectedForecast, WaypointForecastToDisplay, Sidebar, UseNauticalUnits) {\n super();\n this.SessionId = SessionId;\n this.Detail = Detail;\n this.SessionHistory = SessionHistory;\n this.SelectedForecast = SelectedForecast;\n this.WaypointForecastToDisplay = WaypointForecastToDisplay;\n this.Sidebar = Sidebar;\n this.UseNauticalUnits = UseNauticalUnits;\n }\n}\n\nexport function State_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.SessionDetails.State\", [], State, () => [[\"SessionId\", class_type(\"System.Guid\")], [\"Detail\", option_type(SessionDetail_$reflection())], [\"SessionHistory\", array_type(SessionHistoryDay_$reflection())], [\"SelectedForecast\", Forecast_$reflection()], [\"WaypointForecastToDisplay\", option_type(tuple_type(Response_RouteWaypoint_$reflection(), list_type(Response_SessionInterpolatedForecast_$reflection())))], [\"Sidebar\", bool_type], [\"UseNauticalUnits\", bool_type]]);\n}\n\nexport function init(i) {\n return [new State(i, undefined, new Array(0), new Forecast(1, []), undefined, false, true), singleton((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n}\n\nfunction groupSessionsByDay(sessions) {\n return map((tupledArg) => (new SessionHistoryDay(tupledArg[0], true, tupledArg[1])), toArray(sortByDescending((tuple) => tuple[0], List_groupBy((s) => fromDate(date_1(s.CreatedAt)), sessions, {\n Equals: equals,\n GetHashCode: dateHash,\n }), {\n Compare: compare,\n })));\n}\n\nfunction selectedIsOpen(lastDay, days) {\n if (lastDay == null) {\n return days;\n }\n else {\n const day = lastDay;\n return map((d) => {\n if (equals(d.Date, day)) {\n return new SessionHistoryDay(d.Date, false, d.Sessions);\n }\n else {\n return d;\n }\n }, days);\n }\n}\n\nfunction sortForecast(forecasts) {\n return sortBy((tupledArg) => {\n const wp = tupledArg[0];\n return [wp.TimePoint.DateTime, fromTryMethod((arg) => {\n let outArg = 0;\n return [tryParse(arg, 511, false, 32, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n }, wp.Reference)];\n }, forecasts, {\n Compare: compareArrays,\n });\n}\n\nexport function update(msg, state) {\n switch (msg.tag) {\n case 1: {\n const details = msg.fields[0];\n if (details.tag === 1) {\n return [state, ErrorView_Cmd_ofError(details.fields[0])];\n }\n else {\n const detail = details.fields[0];\n const lastItem = tryHead(sortByDescending((t) => t.CreatedAt, detail.SessionStates, {\n Compare: compare,\n }));\n const lastGuid = map_1((t_1) => t_1.Token, lastItem);\n const viewDetail = new SessionDetail(detail.VesselName, detail.CreatedAt, detail.Parameters, detail.Waypoints);\n const sessionHistory = selectedIsOpen(map_1((t_2) => fromDate(date_1(t_2.CreatedAt)), lastItem), groupSessionsByDay(detail.SessionStates));\n if (lastGuid != null) {\n const g = lastGuid;\n return [new State(state.SessionId, viewDetail, sessionHistory, state.SelectedForecast, state.WaypointForecastToDisplay, state.Sidebar, state.UseNauticalUnits), singleton((dispatch) => {\n dispatch(new Msg(2, [g]));\n })];\n }\n else {\n return [new State(state.SessionId, viewDetail, sessionHistory, new Forecast(1, []), state.WaypointForecastToDisplay, state.Sidebar, state.UseNauticalUnits), ErrorView_Cmd_error(\"No token returned from server\")];\n }\n }\n }\n case 2:\n return [new State(state.SessionId, state.Detail, state.SessionHistory, new Forecast(0, []), state.WaypointForecastToDisplay, state.Sidebar, state.UseNauticalUnits), Cmd_OfAsync_eitherAsResult(() => onSessionDetailsAPI((x_2) => x_2.GetSessionResponseDetail(msg.fields[0])), (Item_1) => (new Msg(3, [Item_1])))];\n case 3: {\n const response = msg.fields[0];\n if (response.tag === 1) {\n return [state, ErrorView_Cmd_ofError(response.fields[0])];\n }\n else {\n const r = response.fields[0];\n return [new State(state.SessionId, state.Detail, state.SessionHistory, new Forecast(2, [new Response_RouteInterpolatedForecast(r.Token, sortForecast(r.Forecasts))]), state.WaypointForecastToDisplay, state.Sidebar, state.UseNauticalUnits), Cmd_none()];\n }\n }\n case 4:\n return [new State(state.SessionId, state.Detail, state.SessionHistory, state.SelectedForecast, msg.fields[0], state.Sidebar, state.UseNauticalUnits), Cmd_none()];\n case 5:\n return [new State(state.SessionId, state.Detail, state.SessionHistory, state.SelectedForecast, undefined, state.Sidebar, state.UseNauticalUnits), Cmd_none()];\n case 6:\n return [new State(state.SessionId, state.Detail, state.SessionHistory, state.SelectedForecast, state.WaypointForecastToDisplay, true, state.UseNauticalUnits), Cmd_none()];\n case 7:\n return [new State(state.SessionId, state.Detail, state.SessionHistory, state.SelectedForecast, state.WaypointForecastToDisplay, false, state.UseNauticalUnits), Cmd_none()];\n case 8:\n return [new State(state.SessionId, state.Detail, state.SessionHistory, state.SelectedForecast, state.WaypointForecastToDisplay, state.Sidebar, msg.fields[0]), Cmd_none()];\n case 9:\n return [new State(state.SessionId, state.Detail, map((d) => {\n if (equals(d.Date, msg.fields[0])) {\n return new SessionHistoryDay(d.Date, !d.IsCollapsed, d.Sessions);\n }\n else {\n return d;\n }\n }, state.SessionHistory), state.SelectedForecast, state.WaypointForecastToDisplay, state.Sidebar, state.UseNauticalUnits), Cmd_none()];\n default:\n return [state, Cmd_OfAsync_eitherAsResult(() => onSessionDetailsAPI((x) => x.GetSessionDetails(state.SessionId)), (Item) => (new Msg(1, [Item])))];\n }\n}\n\nexport const cn = (() => {\n const styles = SessionDetails$002Emodule;\n const cnFn = (name) => (styles[name]);\n const cnFns = (names) => map_2((x) => (styles[x]), names);\n return {\n className: cnFn,\n classes: cnFns,\n prop: {\n className: (arg) => [\"className\", cnFn(arg)],\n classes: (arg_1) => [\"className\", join(\" \", cnFns(arg_1))],\n },\n };\n})();\n\nexport class ColumnName extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Coordinates\", \"Ref\", \"Time\", \"Model\", \"Direction\", \"Speed\", \"ShowOnMapButton\", \"Height\", \"Period\", \"Icon\", \"Sealevel\", \"Coverage\", \"Temperature\", \"Precipitation\", \"Category\", \"Code\"];\n }\n}\n\nexport function ColumnName_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.SessionDetails.ColumnName\", [], ColumnName, () => [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]);\n}\n\nexport function ColumnNameModule_fromValue(str) {\n switch (str) {\n case \"Coordinates\":\n return new ColumnName(0, []);\n case \"Ref\":\n return new ColumnName(1, []);\n case \"Time\":\n return new ColumnName(2, []);\n case \"Model\":\n return new ColumnName(3, []);\n case \"Direction\":\n return new ColumnName(4, []);\n case \"Speed\":\n return new ColumnName(5, []);\n case \"ShowOnMapButton\":\n return new ColumnName(6, []);\n case \"Height\":\n return new ColumnName(7, []);\n case \"Period\":\n return new ColumnName(8, []);\n case \"Icon\":\n return new ColumnName(9, []);\n case \"Sealevel\":\n return new ColumnName(10, []);\n case \"Coverage\":\n return new ColumnName(11, []);\n case \"Temperature\":\n return new ColumnName(12, []);\n case \"Precipitation\":\n return new ColumnName(13, []);\n case \"Category\":\n return new ColumnName(14, []);\n case \"Code\":\n return new ColumnName(15, []);\n default:\n return toFail(printf(\"Cannot recognize value %A as valid ColumnName\"))(str);\n }\n}\n\nexport function ColumnNameModule_value(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"Ref\";\n case 2:\n return \"Time\";\n case 3:\n return \"Model\";\n case 4:\n return \"Direction\";\n case 5:\n return \"Speed\";\n case 6:\n return \"ShowOnMapButton\";\n case 7:\n return \"Height\";\n case 8:\n return \"Period\";\n case 9:\n return \"Icon\";\n case 10:\n return \"Sealevel\";\n case 11:\n return \"Coverage\";\n case 12:\n return \"Temperature\";\n case 13:\n return \"Precipitation\";\n case 14:\n return \"Category\";\n case 15:\n return \"Code\";\n default:\n return \"Coordinates\";\n }\n}\n\nfunction getColumnHeadersWithColumnOrder(detail) {\n return append(singleton([\"waypoint\", [new ColumnName(1, []), new ColumnName(0, []), new ColumnName(2, []), new ColumnName(6, [])]]), map_2((f) => [WeatherTypeModule_ParameterModule_name(f.Parameter), toArray(append(map_2((m) => ColumnNameModule_fromValue(m.Name), WeatherTypeModule_ParameterModule_metadata(f.Parameter)), singleton(new ColumnName(3, []))))], detail.Parameters));\n}\n\nexport class ProcessingStatus extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Processed\", \"Partial\", \"NotProcessed\"];\n }\n}\n\nexport function ProcessingStatus_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.SessionDetails.ProcessingStatus\", [], ProcessingStatus, () => [[], [], []]);\n}\n\nfunction getStatus(pars, fc) {\n const parsLength = length(pars) | 0;\n const howMany = length(fc) | 0;\n if (howMany === parsLength) {\n return new ProcessingStatus(0, []);\n }\n else if ((howMany < parsLength) && (howMany > 0)) {\n return new ProcessingStatus(1, []);\n }\n else {\n return new ProcessingStatus(2, []);\n }\n}\n\nfunction DivsForStandardTable_modelNameAndCreatedDiv(name, created) {\n let children;\n const elm = ofArray([DivsForStandardTable_defaultDiv(name), (children = singleton(TextModule_View(ofList(map_2((value_3) => value_3, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(2, [])], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"color\", \"var(--lhds-color-ui-500)\"], [\"children\", singleton(createElement(DateTimeOffset_DateTimeWithTimezone, {\n dateTime: created,\n }))]])), {\n Compare: comparePrimitives,\n }))), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n }))]);\n return createElement(\"div\", {\n className: cn.className(\"modelNameCreated\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n}\n\nfunction DivsForStandardTable_defaultDivWithTooltip(value, tooltipValue) {\n const children = singleton(TooltipModule_View(ofList(map_2((value_3) => value_3, ofArray([[\"label\", tooltipValue], [\"placement\", \"top\"], [\"children\", singleton(TextModule_View(ofList(map_2((value_2) => value_2, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(1, [])], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", value]])), {\n Compare: comparePrimitives,\n })))]])), {\n Compare: comparePrimitives,\n })));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nfunction DivsForStandardTable_loadingDiv(value) {\n let t;\n const children = ofArray([IconModule_View(ofList(map_2((value_1) => value_1, ofArray([(t = faHourglassHalf, [\"icon\", t]), [\"size\", 14], [\"color\", \"var(--lhds-color-ui-600)\"]])), {\n Compare: comparePrimitives,\n })), TextModule_View(ofList(map_2((value_3) => value_3, ofArray([[\"variant\", new TextVariant(3, [])], [\"size\", new TextSize(1, [])], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", value]])), {\n Compare: comparePrimitives,\n }))]);\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nfunction DivsForStandardTable_cloudsDiv(value) {\n const p_1_3 = ofList(map_2((value_3) => value_3, ofArray([[\"num\", 5], [\"children\", singleton(TooltipModule_View(ofList(map_2((value_2) => value_2, ofArray([[\"label\", format('{0:' + \"0.0000\" + '}', value)], [\"placement\", \"top\"], [\"children\", singleton(IconModule_View(ofList(map_2((value_1) => value_1, ofArray([[\"icon\", ((value >= 0) && (value <= 30)) ? faSun : (((value > 30) && (value < 60)) ? faCloudSun : faCloud)], [\"color\", \"var(--lhds-color-ui-600)\"], [\"size\", 25]])), {\n Compare: comparePrimitives,\n })))]])), {\n Compare: comparePrimitives,\n })))]])), {\n Compare: comparePrimitives,\n });\n return createElement(IndentModule_View, {\n p: p_1_3,\n });\n}\n\nfunction DivsForStandardTable_coordDiv(value, tooltipValue) {\n const children = singleton(TooltipModule_View(ofList(map_2((value_3) => value_3, ofArray([[\"label\", tooltipValue], [\"placement\", \"top\"], [\"children\", singleton(TextModule_View(ofList(map_2((value_2) => value_2, ofArray([[\"variant\", new TextVariant(3, [])], [\"size\", new TextSize(1, [])], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", value]])), {\n Compare: comparePrimitives,\n })))]])), {\n Compare: comparePrimitives,\n })));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nfunction DivsForStandardTable_directionsDiv(value, unit, useNauticalUnits) {\n let p_1_5, p_1_3, elems, t_7;\n const computedValue = !useNauticalUnits ? value : rotateDirection180(value);\n const p_1_6 = ofList(map_2((value_12) => value_12, singleton([\"children\", singleton((p_1_5 = ofList(map_2((value_11) => value_11, singleton([\"children\", ofArray([TooltipModule_View(ofList(map_2((value_4) => value_4, ofArray([[\"label\", format('{0:' + \"0.0000\" + '}', computedValue)], [\"placement\", \"top\"], [\"children\", singleton(TextModule_View(ofList(map_2((value_3) => value_3, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(1, [])], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", `${format('{0:' + \"0\" + '}', computedValue)} ${unit}`]])), {\n Compare: comparePrimitives,\n })))]])), {\n Compare: comparePrimitives,\n })), (p_1_3 = ofList(map_2((value_5) => value_5, empty()), {\n Compare: comparePrimitives,\n }), createElement(SpaceModule_View, {\n p: p_1_3,\n })), createElement(\"div\", createObj(ofArray([[\"style\", {\n transform: (\"rotate(\" + ~~value) + \"deg)\",\n }], (elems = [IconModule_View(ofList(map_2((value_9) => value_9, ofArray([(t_7 = faLongArrowAltUp, [\"icon\", t_7]), [\"color\", \"var(--lhds-color-ui-600)\"]])), {\n Compare: comparePrimitives,\n }))], [\"children\", reactApi.Children.toArray(Array.from(elems))])])))])])), {\n Compare: comparePrimitives,\n }), createElement(RowModule_View, {\n p: p_1_5,\n })))])), {\n Compare: comparePrimitives,\n });\n return createElement(IndentModule_View, {\n p: p_1_6,\n });\n}\n\nfunction DivsForStandardTable_waypointButton(onClickEvent) {\n const children = singleton(ButtonBase_ViewSecondary(ofList(map_2((value) => value, ofArray([[\"label\", \"Show on map\"], [\"size\", new ButtonSize(1, [])], [\"id\", \"showOnMapButton\"], [\"onClick\", onClickEvent]])), {\n Compare: comparePrimitives,\n })));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nfunction DivsForStandardTable_statusIcon(status) {\n let t_3, t_6, t;\n switch (status.tag) {\n case 1:\n return IconModule_View(ofList(map_2((value_1) => value_1, ofArray([(t_3 = faHourglassHalf, [\"icon\", t_3]), [\"size\", 16], [\"color\", \"var(--lhds-color-orange-600\"]])), {\n Compare: comparePrimitives,\n }));\n case 2:\n return IconModule_View(ofList(map_2((value_2) => value_2, ofArray([(t_6 = faBan, [\"icon\", t_6]), [\"size\", 16], [\"color\", \"var(--lhds-color-red-600\"]])), {\n Compare: comparePrimitives,\n }));\n default:\n return IconModule_View(ofList(map_2((value) => value, ofArray([(t = faCheckCircle, [\"icon\", t]), [\"size\", 16], [\"color\", \"var(--lhds-color-green-600\"]])), {\n Compare: comparePrimitives,\n }));\n }\n}\n\nfunction DivsForStandardTable_statusIconDiv(pars, p) {\n let p_1_1;\n const children = singleton((p_1_1 = ofList(map_2((value) => value, singleton([\"children\", singleton(DivsForStandardTable_statusIcon(getStatus(pars, p.item[1])))])), {\n Compare: comparePrimitives,\n }), createElement(IndentModule_View, {\n p: p_1_1,\n })));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nexport function getUnitForParamType(weather, paramType) {\n const res = defaultArg(tryHead(map_2((f_1) => f_1.UnitOfMeasure, where((f) => (f.Name === paramType), WeatherTypeModule_ParameterModule_metadata(WeatherTypeModule_ParameterModule_fromWeatherType(weather))))), \"\");\n if (res.indexOf(\"degree\") >= 0) {\n return \"°\";\n }\n else {\n return res;\n }\n}\n\nfunction getFloatValueByColumnName(propName, forecastWeatherType) {\n let copyOfStruct;\n return parse(toString(getRecordField(head(getUnionFields(forecastWeatherType, (copyOfStruct = forecastWeatherType, WeatherType_$reflection()))[1]), find((t) => (name_25(t) === propName), getRecordElements(WeatherTypeModule_declaringType(forecastWeatherType))))));\n}\n\nfunction getDivByColumnNameFloat(value, tooltip, unit, columnName, useNauticalUnits) {\n switch (columnName.tag) {\n case 4:\n return DivsForStandardTable_directionsDiv(value, \"°\", useNauticalUnits);\n case 11:\n return DivsForStandardTable_cloudsDiv(value);\n case 14:\n case 15:\n return DivsForStandardTable_defaultDivWithTooltip(`${format('{0:' + \"0\" + '}', value)}`, tooltip);\n default:\n return DivsForStandardTable_defaultDivWithTooltip(`${format('{0:' + \"0.0\" + '}', value)} ${unit}`, tooltip);\n }\n}\n\nfunction toGpsString(p) {\n const lonStr = format('{0:' + \"0.000\" + '}', p.Longitude);\n return `${format('{0:' + \"0.000\" + '}', p.Latitude)} ${(p.Latitude > 0) ? \"N\" : \"S\"}, ${lonStr} ${(p.Longitude > 0) ? \"E\" : \"W\"}`;\n}\n\nfunction getToolTip(value, forecastWeatherType) {\n switch (forecastWeatherType.tag) {\n case 11:\n return forecastWeatherType.fields[0].Description;\n case 12:\n return forecastWeatherType.fields[0].Description;\n default:\n return toString(value);\n }\n}\n\nfunction renderCell(dispatch, useNauticalUnits, p) {\n const patternInput = p.item;\n const waypoint = patternInput[0];\n const patternInput_1 = p.value;\n const paramName = patternInput_1[0];\n const columnName = patternInput_1[1];\n const weatherTypeOption = WeatherTypeModule_ParameterModule_tryParse(paramName);\n if (weatherTypeOption != null) {\n const weatherType = weatherTypeOption;\n const forecast = tryFind((f) => equals_1(WeatherTypeModule_ParameterModule_fromWeatherType(f.PointForecast.Weather), weatherType), patternInput[1]);\n const changeUnits = (equals_1(weatherType, new WeatherTypeModule_Parameter(0, [])) ? true : equals_1(weatherType, new WeatherTypeModule_Parameter(3, []))) && useNauticalUnits;\n if (forecast != null) {\n const f_1 = forecast;\n const forecastWeatherType = f_1.PointForecast.Weather;\n const unit = getUnitForParamType(forecastWeatherType, ColumnNameModule_value(columnName));\n switch (columnName.tag) {\n case 3:\n return DivsForStandardTable_modelNameAndCreatedDiv(f_1.Source.Model.Name, f_1.Source.Model.Created);\n case 4: {\n const value = getFloatValueByColumnName(ColumnNameModule_value(columnName), forecastWeatherType);\n return getDivByColumnNameFloat(value, value.toString(), \"°\", columnName, changeUnits);\n }\n case 14:\n case 15: {\n const value_2 = getFloatValueByColumnName(ColumnNameModule_value(columnName), forecastWeatherType);\n return getDivByColumnNameFloat(value_2, getToolTip(value_2, forecastWeatherType), unit, columnName, false);\n }\n default: {\n const value_3 = getFloatValueByColumnName(ColumnNameModule_value(columnName), forecastWeatherType);\n return getDivByColumnNameFloat(value_3, value_3.toString(), unit, columnName, false);\n }\n }\n }\n else {\n return DivsForStandardTable_loadingDiv(\"\");\n }\n }\n else {\n switch (columnName.tag) {\n case 1: {\n const maxLength = ((4 * 2) + 3) | 0;\n if (waypoint.Reference.length > maxLength) {\n const r = waypoint.Reference;\n return DivsForStandardTable_defaultDivWithTooltip(`${r.slice(undefined, 4 + 1)}...${r.slice(r.length - 4, r.length)}`, waypoint.Reference);\n }\n else {\n return DivsForStandardTable_defaultDiv(waypoint.Reference);\n }\n }\n case 0:\n return DivsForStandardTable_coordDiv(toGpsString(waypoint.TimePoint.Point), `${waypoint.TimePoint.Point.Latitude}, ${waypoint.TimePoint.Point.Longitude}`);\n case 2:\n return DivsForStandardTable_timeDiv(waypoint.TimePoint.DateTime);\n case 6:\n return DivsForStandardTable_waypointButton((_arg) => {\n dispatch(new Msg(4, [p.item]));\n });\n default:\n return DivsForStandardTable_defaultDiv(paramName);\n }\n }\n}\n\nfunction getStats(detail, fc) {\n const parsLength = length(detail.Parameters) | 0;\n return fold((acc, item) => {\n const howMany = length(item[1]) | 0;\n if (howMany === parsLength) {\n return {\n Full: acc.Full + 1,\n Missing: acc.Missing - 1,\n Partial: acc.Partial,\n };\n }\n else if ((howMany < parsLength) && (howMany > 0)) {\n return {\n Full: acc.Full,\n Missing: acc.Missing - 1,\n Partial: acc.Partial + 1,\n };\n }\n else {\n return acc;\n }\n }, {\n Full: 0,\n Missing: length(detail.Waypoints),\n Partial: 0,\n }, fc.Forecasts);\n}\n\nfunction ForecastMap_RouteInterpolatedForecast_closestWaypoint(fcs, p) {\n return minBy((tuple) => tuple[0], map_2((tupledArg) => {\n const r = tupledArg[0];\n return [PointModule_distance(r.TimePoint.Point, p), [r, tupledArg[1]]];\n }, fcs), {\n Compare: comparePrimitives,\n })[1];\n}\n\nfunction ForecastMap_getBounds(f) {\n const fxo = tryHead(f.Forecasts);\n const lxo = tryLast(f.Forecasts);\n let matchResult, fx, lx;\n if (fxo != null) {\n if (lxo != null) {\n matchResult = 0;\n fx = fxo;\n lx = lxo;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return map_2((x) => x.TimePoint.Point, ofArray([fx[0], lx[0]]));\n default:\n return empty();\n }\n}\n\nfunction ForecastMap_viewPoint(sessionDetails, wpToShow_, wpToShow__1, useNauticalUnits) {\n let children;\n const wpToShow = [wpToShow_, wpToShow__1];\n const statusToDisplay = getStatus(sessionDetails.Parameters, wpToShow[1]);\n const waypoint = wpToShow[0];\n const p_1_12 = ofList(map_2((value_20) => value_20, ofArray([[\"position\", waypoint.TimePoint.Point], [\"closeButton\", true], [\"closeOnClick\", false], [\"children\", singleton((children = toList(delay(() => {\n let p_1_3, elm, elm_2, p_1_1, p_1_2;\n return append_1(singleton_1((p_1_3 = ofList(map_2((value_9) => value_9, singleton([\"children\", singleton((elm = ofArray([(elm_2 = ofArray([DivsForStandardTable_statusIcon(statusToDisplay), (p_1_1 = ofList(map_2((value_6) => value_6, empty()), {\n Compare: comparePrimitives,\n }), createElement(SpaceModule_View, {\n p: p_1_1,\n })), (p_1_2 = ofList(map_2((value_8) => value_8, ofArray([[\"children\", singleton(`${toGpsString(waypoint.TimePoint.Point)} (WGS84)`)], [\"variant\", \"h5\"]])), {\n Compare: comparePrimitives,\n }), createElement(HeadingModule_View, {\n p: p_1_2,\n }))]), createElement(\"div\", {\n className: cn.className(\"heading-icon\"),\n children: reactApi.Children.toArray(Array.from(elm_2)),\n })), DivsForStandardTable_timeDiv(waypoint.TimePoint.DateTime)]), createElement(\"div\", {\n className: cn.className(\"popup-header\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n })))])), {\n Compare: comparePrimitives,\n }), createElement(RowModule_View, {\n p: p_1_3,\n }))), delay(() => collect((pointForecast) => {\n let p_1_11, p_1_4, p_1_5, p_1_10;\n const modelPropertiesNames = map_2((f) => f.Name, WeatherTypeModule_ParameterModule_metadata(WeatherTypeModule_ParameterModule_fromWeatherType(pointForecast.PointForecast.Weather)));\n const param = WeatherTypeModule_ParameterModule_fromWeatherType(pointForecast.PointForecast.Weather);\n const paramName = WeatherTypeModule_ParameterModule_name(param);\n const changeUnits = (equals_1(param, new WeatherTypeModule_Parameter(0, [])) ? true : equals_1(param, new WeatherTypeModule_Parameter(3, []))) && useNauticalUnits;\n return singleton_1((p_1_11 = ofList(map_2((value_19) => value_19, singleton([\"children\", ofArray([(p_1_4 = ofList(map_2((value_11) => value_11, ofArray([[\"children\", singleton(paramName)], [\"variant\", \"h5\"]])), {\n Compare: comparePrimitives,\n }), createElement(HeadingModule_View, {\n p: p_1_4,\n })), (p_1_5 = ofList(map_2((value_12) => value_12, singleton([\"children\", \"100%\"])), {\n Compare: comparePrimitives,\n }), createElement(SeparatorLineModule_View, {\n p: p_1_5,\n })), (p_1_10 = ofList(map_2((value_18) => value_18, singleton([\"children\", toList(delay(() => append_1(collect((propertyName) => {\n let p_1_6;\n const value_13 = getFloatValueByColumnName(propertyName, pointForecast.PointForecast.Weather);\n const unit = getUnitForParamType(pointForecast.PointForecast.Weather, propertyName);\n return append_1(singleton_1((p_1_6 = ofList(map_2((value_14) => value_14, ofArray([[\"text\", propertyName], [\"children\", singleton(getDivByColumnNameFloat(value_13, getToolTip(value_13, pointForecast.PointForecast.Weather), unit, ColumnNameModule_fromValue(propertyName), changeUnits))]])), {\n Compare: comparePrimitives,\n }), createElement(LabelModule_View, {\n p: p_1_6,\n }))), delay(() => {\n let p_1_7;\n return singleton_1((p_1_7 = ofList(map_2((value_15) => value_15, empty()), {\n Compare: comparePrimitives,\n }), createElement(SpaceModule_View, {\n p: p_1_7,\n })));\n }));\n }, modelPropertiesNames), delay(() => {\n let p_1_8;\n return append_1(singleton_1((p_1_8 = ofList(map_2((value_16) => value_16, ofArray([[\"text\", \"Model\"], [\"children\", singleton(DivsForStandardTable_modelNameAndCreatedDiv(pointForecast.Source.Model.Name, pointForecast.Source.Model.Created))]])), {\n Compare: comparePrimitives,\n }), createElement(LabelModule_View, {\n p: p_1_8,\n }))), delay(() => {\n let p_1_9;\n return singleton_1((p_1_9 = ofList(map_2((value_17) => value_17, singleton([\"children\", \"100%\"])), {\n Compare: comparePrimitives,\n }), createElement(SeparatorLineModule_View, {\n p: p_1_9,\n })));\n }));\n }))))])), {\n Compare: comparePrimitives,\n }), createElement(RowModule_View, {\n p: p_1_10,\n }))])])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_11,\n })));\n }, wpToShow[1])));\n })), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n })))]])), {\n Compare: comparePrimitives,\n });\n return createElement(Popup_View, {\n p: p_1_12,\n });\n}\n\nfunction ForecastMap_viewInner(f, sd, wpToShow, useNauticalUnits, dispatch) {\n let elems, p_1_5, props, p_1_4, p_1_1, p_1_3, props_2, arg_3, arg_1_1, arg_2_1, arg_3_1;\n const closestPointIndex = map_1((tuple) => tuple[0], tryHead(filter((tupledArg_1) => (compare(tupledArg_1[1], utcNow()) > 0), mapIndexed((i, tupledArg) => [i, tupledArg[0].TimePoint.DateTime], f.Forecasts))));\n const currentLocation = (closestPointIndex != null) ? item_1(closestPointIndex, f.Forecasts)[0].TimePoint.Point : last(f.Forecasts)[0].TimePoint.Point;\n const url = up_arrow;\n const angle = bearing(Point_toPosition(head_1(f.Forecasts)[0].TimePoint.Point), Point_toPosition(last(f.Forecasts)[0].TimePoint.Point)) | 0;\n return createElement(\"div\", createObj(ofArray([[\"className\", cn.className(\"map\")], [\"style\", {\n height: 1034 + \"px\",\n }], (elems = [(p_1_5 = ofList(map_2((value_15) => value_15, ofArray([[\"bounds\", ForecastMap_getBounds(f)], [\"scrollWheelZoom\", true], [\"children\", ofArray([(props = {\n attribution: \"© OpenStreetMap contributors\",\n url: \"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\n }, react.createElement(TileLayer, props)), (p_1_4 = ofList(map_2((value_13) => value_13, ofArray([[\"onClick\", (arg_1) => {\n dispatch(new Msg(4, [ForecastMap_RouteInterpolatedForecast_closestWaypoint(f.Forecasts, arg_1)]));\n }], [\"children\", ofArray([(p_1_1 = ofList(map_2((value_6) => value_6, ofArray([[\"color\", \"#2378CD\"], [\"weight\", 5], [\"dashArray\", \"5 10\"], [\"points\", map_2((arg_2) => arg_2[0].TimePoint.Point, f.Forecasts)]])), {\n Compare: comparePrimitives,\n }), createElement(Polyline_View, {\n p: p_1_1,\n })), (p_1_3 = ofList(map_2((value_12) => value_12, ofArray([[\"position\", currentLocation], [\"rotationAngle\", angle], [\"rotationOrigin\", \"center center\"], [\"icon\", (props_2 = ofArray([[\"iconUrl\", url], [\"iconSize\", [24, 24]], [\"iconAnchor\", [12, 12]]]), (arg_3 = toString(map_1((x_4) => x_4, FSharpMap__TryFind(ofList(map_2((value_7) => value_7, props_2), {\n Compare: comparePrimitives,\n }), \"iconUrl\"))), (arg_1_1 = map_1((x_6) => x_6, FSharpMap__TryFind(ofList(map_2((value_9) => value_9, props_2), {\n Compare: comparePrimitives,\n }), \"iconSize\")), (arg_2_1 = map_1((x_8) => x_8, FSharpMap__TryFind(ofList(map_2((value_10) => value_10, props_2), {\n Compare: comparePrimitives,\n }), \"iconAnchor\")), (arg_3_1 = map_1((x_10) => x_10, FSharpMap__TryFind(ofList(map_2((value_11) => value_11, props_2), {\n Compare: comparePrimitives,\n }), \"popupAnchor\")), new Icon({iconUrl: arg_3, iconSize: arg_1_1, iconAnchor: arg_2_1, popupAnchor: arg_3_1}))))))]])), {\n Compare: comparePrimitives,\n }), createElement(Marker_View, {\n p: p_1_3,\n }))])]])), {\n Compare: comparePrimitives,\n }), createElement(FeatureGroup_View, {\n p: p_1_4,\n })), defaultArg(map_1((f_2) => ForecastMap_viewPoint(sd, f_2[0], f_2[1], useNauticalUnits), wpToShow), defaultOf())])]])), {\n Compare: comparePrimitives,\n }), createElement(MapContainer_View, {\n p: p_1_5,\n }))], [\"children\", reactApi.Children.toArray(Array.from(elems))])])));\n}\n\nfunction ForecastMap_view(state, dispatch) {\n const matchValue = state.Detail;\n const matchValue_1 = state.SelectedForecast;\n let matchResult, f, s;\n if (matchValue != null) {\n if (matchValue_1.tag === 2) {\n matchResult = 0;\n f = matchValue_1.fields[0];\n s = matchValue;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n if (length(f.Forecasts) > 0) {\n return ForecastMap_viewInner(f, s, state.WaypointForecastToDisplay, state.UseNauticalUnits, dispatch);\n }\n else {\n return defaultOf();\n }\n default:\n return defaultOf();\n }\n}\n\nexport function StatelessCollapsible(statelessCollapsibleInputProps) {\n const children = statelessCollapsibleInputProps.children;\n const label = statelessCollapsibleInputProps.label;\n const onClickHandler = statelessCollapsibleInputProps.onClickHandler;\n const isCollapsed = statelessCollapsibleInputProps.isCollapsed;\n const p_1_1 = ofList(map_2((value) => value, ofArray([[\"label\", DateTimeOffset_dateStr(DateTimeOffset_adjustFromContext(reactApi.useContext(timeZoneContext), label))], [\"collapsed\", isCollapsed], [\"onClick\", onClickHandler], [\"children\", children]])), {\n Compare: comparePrimitives,\n });\n return createElement(CollapsibleModule_View, {\n p: p_1_1,\n });\n}\n\nexport function SessionHistory_SessionHistoryDayGroup(sessionHistory_SessionHistoryDayGroupInputProps) {\n const sessionsDay = sessionHistory_SessionHistoryDayGroupInputProps.sessionsDay;\n const selectedToken = sessionHistory_SessionHistoryDayGroupInputProps.selectedToken;\n const dispatch = sessionHistory_SessionHistoryDayGroupInputProps.dispatch;\n return createElement(StatelessCollapsible, {\n isCollapsed: sessionsDay.IsCollapsed,\n onClickHandler: (_arg) => {\n dispatch(new Msg(9, [sessionsDay.Date]));\n },\n label: sessionsDay.Date,\n children: map_2((s) => {\n let elems_1, elm;\n return createElement(\"div\", createObj(ofArray([[\"onClick\", (_arg_1) => {\n dispatch(new Msg(2, [s.Token]));\n }], [\"className\", cn.className(\"sessionHistoryItem\")], (elems_1 = [createElement(\"div\", {\n children: [s.Token],\n }), (elm = toList(delay(() => {\n let p_1_1;\n return append_1(equals_1(s.Token, selectedToken) ? singleton_1((p_1_1 = ofList(map_2((value_8) => value_8, ofArray([[\"variant\", \"secondary\"], [\"label\", \"selected\"]])), {\n Compare: comparePrimitives,\n }), createElement(ChipModule_View, {\n p: p_1_1,\n }))) : empty_1(), delay(() => singleton_1(createElement(\"div\", {\n children: [createElement(DateTimeOffset_TimeWithTimezone, {\n dateTime: s.CreatedAt,\n })],\n }))));\n })), createElement(\"div\", {\n className: cn.className(\"sessionHistoryItemRight\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n }))], [\"children\", reactApi.Children.toArray(Array.from(elems_1))])])));\n }, sortByDescending((x) => x.CreatedAt, sessionsDay.Sessions, {\n Compare: compare,\n })),\n });\n}\n\nexport function InfoBanners(waypointsCount, detail, forecast) {\n let p_1_1, p_1_2, p_1_3, p_1_4, p_1_5;\n const ctx = reactApi.useContext(timeZoneContext);\n let patternInput;\n switch (forecast.tag) {\n case 1: {\n patternInput = [\"Unknown\", \"Loading\", \"Unknown\", \"Unknown\", \"Unknown\"];\n break;\n }\n case 2: {\n const forecast_1 = forecast.fields[0];\n const forecasts = forecast_1.Forecasts;\n const firstForecast = defaultArg(map_1((arg) => arg[0].TimePoint.DateTime, tryHead(forecasts)), detail.CreatedAt);\n const lastForecast = map_1((arg_1) => arg_1[0].TimePoint.DateTime, tryLast(forecasts));\n const created = `${DateTimeOffset_dateTimeStr(DateTimeOffset_adjustFromContext(ctx, firstForecast))}`;\n let forecastRange;\n const lastForecastString = DateTimeOffset_dateTimeStr(DateTimeOffset_adjustFromContext(ctx, defaultArg(lastForecast, firstForecast)));\n forecastRange = (`${DateTimeOffset_dateTimeStr(DateTimeOffset_adjustFromContext(ctx, firstForecast))} - ${lastForecastString}`);\n const stats = getStats(detail, forecast_1);\n patternInput = [created, forecastRange, `${stats.Full}/${waypointsCount}`, `${stats.Partial}/${waypointsCount}`, `${stats.Missing}/${waypointsCount}`];\n break;\n }\n default:\n patternInput = [\"Loading\", \"Loading\", \"Loading\", \"Loading\", \"Loading\"];\n }\n const elm = ofArray([createElement(\"div\", {\n className: cn.className(\"box\"),\n children: (p_1_1 = ofList(map_2((value_8) => value_8, ofArray([[\"headerText\", \"Session Initiated Date\"], [\"variant\", \"info\"], [\"text\", patternInput[0]]])), {\n Compare: comparePrimitives,\n }), createElement(BannerModule_View, {\n p: p_1_1,\n })),\n }), createElement(\"div\", {\n className: cn.className(\"box\"),\n children: (p_1_2 = ofList(map_2((value_13) => value_13, ofArray([[\"headerText\", \"Session time range\"], [\"variant\", \"info\"], [\"text\", patternInput[1]]])), {\n Compare: comparePrimitives,\n }), createElement(BannerModule_View, {\n p: p_1_2,\n })),\n }), createElement(\"div\", {\n className: cn.className(\"box\"),\n children: (p_1_3 = ofList(map_2((value_18) => value_18, ofArray([[\"headerText\", \"Processed Requests\"], [\"variant\", \"success\"], [\"text\", patternInput[2]]])), {\n Compare: comparePrimitives,\n }), createElement(BannerModule_View, {\n p: p_1_3,\n })),\n }), createElement(\"div\", {\n className: cn.className(\"box\"),\n children: (p_1_4 = ofList(map_2((value_23) => value_23, ofArray([[\"icon\", faHourglassHalf], [\"headerText\", \"Partially Processed\"], [\"variant\", \"warning\"], [\"text\", patternInput[3]]])), {\n Compare: comparePrimitives,\n }), createElement(BannerModule_View, {\n p: p_1_4,\n })),\n }), createElement(\"div\", {\n className: cn.className(\"box\"),\n children: (p_1_5 = ofList(map_2((value_28) => value_28, ofArray([[\"icon\", faBan], [\"headerText\", \"Not Processed\"], [\"variant\", \"error\"], [\"text\", patternInput[4]]])), {\n Compare: comparePrimitives,\n }), createElement(BannerModule_View, {\n p: p_1_5,\n })),\n })]);\n return createElement(\"div\", {\n className: cn.className(\"boxes\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n}\n\nexport function SessionDetailsView(sessionDetailsViewInputProps) {\n let f, p_1_4, p_1_2, p_1_3, elm_2, elm_4, p_1_5, elm_8, p_1_7, p_1_9, elm_14, elm_16, elm_18;\n const sessionId = sessionDetailsViewInputProps.sessionId;\n let patternInput;\n const init_1 = init(sessionId);\n patternInput = React_useElmish_Z6C327F2E(() => ProgramModule_mkProgram(() => init_1, update, (_arg, _arg_1) => {\n }), undefined, [sessionId]);\n const state_1 = patternInput[0];\n const dispatch = patternInput[1];\n const matchValue = state_1.Detail;\n if (matchValue != null) {\n const detail = matchValue;\n const groupsAndColumns = getColumnHeadersWithColumnOrder(detail);\n const tableItems = defaultArg((f = state_1.SelectedForecast, (f.tag === 1) ? undefined : ((f.tag === 2) ? sortForecast(toList(values(fold_1((m, tupledArg) => {\n const w = tupledArg[0];\n return add(w.Reference, [w, tupledArg[1]], m);\n }, ofSeq(map_3((wp) => [wp.Reference, [wp, empty()]], detail.Waypoints), {\n Compare: comparePrimitives,\n }), f.fields[0].Forecasts)))) : undefined)), empty());\n const waypointsCount = length(detail.Waypoints) | 0;\n const elm = ofArray([(p_1_4 = ofList(map_2((value_8) => value_8, singleton([\"children\", ofArray([(p_1_2 = ofList(map_2((value_6) => value_6, ofArray([[\"label\", \"List of vessels\"], [\"dest\", \"/vessels\"]])), {\n Compare: comparePrimitives,\n }), createElement(ReactRouterCrumb_View, {\n p: p_1_2,\n })), (p_1_3 = ofList(map_2((value_7) => value_7, singleton([\"label\", \"Session details\"])), {\n Compare: comparePrimitives,\n }), createElement(CrumbModule_View, {\n p: p_1_3,\n }))])])), {\n Compare: comparePrimitives,\n }), createElement(BreadCrumbsModule_View, {\n p: p_1_4,\n })), (elm_2 = ofArray([(elm_4 = ofArray([PageTitle_title(`Session Details - ${detail.VesselName}`, \"See all details for existing waypoints\"), createElement(\"div\", {\n className: cn.className(\"historyButton\"),\n children: (p_1_5 = ofList(map_2((value_19) => value_19, ofArray([[\"label\", \"Show session history\"], [\"size\", new ButtonSize(0, [])], [\"onClick\", (_arg_2) => {\n dispatch(new Msg(6, []));\n }]])), {\n Compare: comparePrimitives,\n }), createElement(ButtonBase_ViewPrimary, {\n p: p_1_5,\n })),\n })]), createElement(\"div\", {\n className: cn.className(\"heading-wrapper\"),\n children: reactApi.Children.toArray(Array.from(elm_4)),\n })), InfoBanners(waypointsCount, detail, state_1.SelectedForecast), (elm_8 = ofArray([TextModule_View(ofList(map_2((value_24) => value_24, singleton([\"children\", \"Scientific\"])), {\n Compare: comparePrimitives,\n })), createElement(\"div\", {\n className: cn.className(\"wind-switch\"),\n children: (p_1_7 = ofList(map_2((value_29) => value_29, ofArray([[\"label\", \"Nautical\"], [\"onValueChange\", (x_7) => {\n dispatch(new Msg(8, [x_7]));\n }], [\"value\", state_1.UseNauticalUnits]])), {\n Compare: comparePrimitives,\n }), createElement(SwitchWithLabelModule_View, {\n p: p_1_7,\n })),\n })]), createElement(\"div\", {\n className: cn.className(\"label-switch-div\"),\n children: reactApi.Children.toArray(Array.from(elm_8)),\n })), createElement(\"div\", {\n className: cn.className(\"table\"),\n children: StandardTableModule_view(createObj(toList([[\"items\", toArray_1(toArray(tableItems))], [\"variant\", \"relaxed\"], [\"loading\", equals_1(state_1.SelectedForecast, new Forecast(0, []))], [\"config\", createObj(toList(toList(delay(() => append_1(singleton_1([\"keyResolver\", (tupledArg_1) => tupledArg_1[0].Reference]), delay(() => append_1(singleton_1([\"rowBackgroundResolver\", (tupledArg_2) => {\n const status = getStatus(detail.Parameters, tupledArg_2[1]);\n switch (status.tag) {\n case 1:\n return {\n background: \"var(--lhds-color-orange-50)\",\n };\n case 2:\n return {\n background: \"var(--lhds-color-red-50)\",\n };\n default:\n return {\n background: \"var(--lhds-color-green-50)\",\n };\n }\n }]), delay(() => append_1(singleton_1([\"stickyHeader\", true]), delay(() => append_1(singleton_1([\"stickyColumnGroups\", \"first\"]), delay(() => append_1(singleton_1([\"disableSorting\", true]), delay(() => append_1(singleton_1([\"columns\", createObj(toList(delay(() => {\n let columnProps;\n return append_1(singleton_1((columnProps = createObj(toList([[\"name\", `waypoint.${ColumnNameModule_value(new ColumnName(9, []))}`], [\"itemValueResolver\", (_arg_6) => [\"waypoint\", new ColumnName(9, [])]], [\"columnLabel\", \"\"], [\"width\", toText(`${80}px`)], [\"renderCell\", (p_14) => DivsForStandardTable_statusIconDiv(detail.Parameters, p_14)]])), [columnProps.name, columnProps])), delay(() => collect((matchValue_1) => {\n let columnProps_1;\n const group = matchValue_1[0];\n const column = matchValue_1[1];\n return singleton_1((columnProps_1 = createObj(toList([[\"name\", `${group}.${ColumnNameModule_value(column)}`], [\"itemValueResolver\", (_arg_8) => [group, column]], [\"columnLabel\", equals_1(column, new ColumnName(0, [])) ? \"Coordinates (WGS84)\" : ColumnNameModule_value(column)], [\"width\", toText(`${(equals_1(column, new ColumnName(2, [])) ? true : equals_1(column, new ColumnName(1, []))) ? 80 : 130}px`)], [\"renderCell\", (p_15) => renderCell(dispatch, state_1.UseNauticalUnits, p_15)]])), [columnProps_1.name, columnProps_1]));\n }, concat(map_2((f_2) => map((s) => [f_2[0], s], f_2[1]), groupsAndColumns)))));\n })))]), delay(() => append_1(singleton_1([\"columnGroups\", createObj(toList(delay(() => collect((matchValue_2) => {\n let groupProps;\n const group_1 = matchValue_2[0];\n const columns_1 = matchValue_2[1];\n return singleton_1((groupProps = createObj(toList([[\"label\", group_1], [\"name\", group_1], [\"borderLeft\", true], [\"columnOrder\", map((c) => (`${group_1}.${c}`), (group_1 === \"waypoint\") ? append_2([new ColumnName(9, [])], columns_1) : columns_1)]])), [groupProps.name, groupProps]));\n }, groupsAndColumns))))]), delay(() => singleton_1([\"columnGroupOrder\", toArray(map_2((f_3) => f_3[0], groupsAndColumns))])))))))))))))))))))]]))),\n })]), createElement(\"div\", {\n className: cn.className(\"upperPart\"),\n children: reactApi.Children.toArray(Array.from(elm_2)),\n })), DrawerModule_view(ofList(map_2((value_46) => value_46, ofArray([[\"isOpen\", state_1.Sidebar], [\"slideFrom\", \"right\"], [\"width\", `${477}px`], [\"zIndex\", 100], [\"background\", \"white\"], [\"onRequestClose\", () => {\n dispatch(new Msg(7, []));\n }], [\"children\", singleton((p_1_9 = ofList(map_2((value_45) => value_45, singleton([\"children\", singleton((elm_14 = ofArray([(elm_16 = ofArray([createElement(\"div\", {\n children: [\"Session history\"],\n }), ButtonBase_ViewFlat(ofList(map_2((value_41) => value_41, ofArray([[\"onClick\", (_arg_11) => {\n dispatch(new Msg(7, []));\n }], [\"leftIcon\", faTimes]])), {\n Compare: comparePrimitives,\n }))]), createElement(\"div\", {\n className: cn.className(\"sessionHistoryHeader\"),\n children: reactApi.Children.toArray(Array.from(elm_16)),\n })), (elm_18 = toList(delay(() => {\n let xs_10;\n let currentToken;\n const x_10 = state_1.SelectedForecast;\n currentToken = ((x_10.tag === 2) ? x_10.fields[0].Token : undefined);\n return singleton_1((xs_10 = map((s_1) => createElement(SessionHistory_SessionHistoryDayGroup, {\n dispatch: dispatch,\n selectedToken: unwrap(currentToken),\n sessionsDay: s_1,\n }), state_1.SessionHistory), react.createElement(react.Fragment, {}, ...xs_10)));\n })), createElement(\"div\", {\n className: cn.className(\"sessionHistoryList\"),\n children: reactApi.Children.toArray(Array.from(elm_18)),\n }))]), createElement(\"div\", {\n className: cn.className(\"sessionHistory\"),\n children: reactApi.Children.toArray(Array.from(elm_14)),\n })))])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_9,\n })))]])), {\n Compare: comparePrimitives,\n })), ForecastMap_view(state_1, dispatch)]);\n return createElement(\"div\", {\n className: cn.className(\"sessionDetails\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n }\n else {\n const p_1_1 = ofList(map_2((value) => value, singleton([\"text\", \"Loading ...\"])), {\n Compare: comparePrimitives,\n });\n return createElement(LoadingScreenModule_View, {\n p: p_1_1,\n });\n }\n}\n\n","// extracted by mini-css-extract-plugin\nexport default {\"progressCell\":\"tfD8ERD3kVn_M5Ik1B3t\",\"progressBar\":\"r314ZNLEsNzed_ZNV1x7\",\"progressLegend\":\"IfaT4vsvturn7m6bu9nQ\",\"statusCell\":\"ilyuCw4UPkIjYGGCgWiO\",\"supplierCell\":\"enUxSSdFYEp5OIo6_VkH\",\"tableWithHeading\":\"x0RiIp5G6d5Ue0nn31uf\",\"contentDiv\":\"LE8d2IdObw5tgLjaoHDt\",\"iconCell\":\"zEfGRQKasGApvokmbtgO\"};","import { class_type } from \"../../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { defaultArg, map } from \"../../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.19.3/List.js\";\nimport * as react from \"react\";\nimport { Tag } from \"@stenajs-webui/elements\";\n\nexport class TagVariant {\n constructor() {\n }\n}\n\nexport function TagVariant_$reflection() {\n return class_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Elements.TagVariant\", undefined, TagVariant);\n}\n\nexport class TagSize {\n constructor() {\n }\n}\n\nexport function TagSize_$reflection() {\n return class_type(\"StenaWeather.WeatherServiceUI.Client.Components.StenaWebUI.Elements.TagSize\", undefined, TagSize);\n}\n\nexport function TagModule_View(p) {\n let props;\n const label = map((x) => x, FSharpMap__TryFind(p, \"label\"));\n const variant = map((x_1) => x_1, FSharpMap__TryFind(p, \"variant\"));\n props = {\n label: label,\n size: map((x_2) => x_2, FSharpMap__TryFind(p, \"size\")),\n variant: variant,\n };\n const children = defaultArg(map((x_3) => x_3, FSharpMap__TryFind(p, \"children\")), empty());\n return react.createElement(Tag, props, ...children);\n}\n\n","import { map } from \"../../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { FSharpMap__TryFind } from \"../../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport * as react from \"react\";\nimport { Circle, Line } from \"rc-progress\";\nimport { class_type } from \"../../fable_modules/fable-library-js.4.19.3/Reflection.js\";\n\nexport function ProgressBarModule_ViewLinear(p) {\n let props;\n const percent = map((x) => x, FSharpMap__TryFind(p, \"percent\"));\n const strokeWidth = map((x_1) => x_1, FSharpMap__TryFind(p, \"strokeWidth\"));\n props = {\n percent: percent,\n strokeColor: map((x_2) => x_2, FSharpMap__TryFind(p, \"strokeColor\")),\n strokeWidth: strokeWidth,\n };\n return react.createElement(Line, props);\n}\n\nexport function ProgressBarModule_ViewCircular(p) {\n let props;\n const percent = map((x) => x, FSharpMap__TryFind(p, \"percent\"));\n const strokeWidth = map((x_1) => x_1, FSharpMap__TryFind(p, \"strokeWidth\"));\n props = {\n percent: percent,\n strokeColor: map((x_2) => x_2, FSharpMap__TryFind(p, \"strokeColor\")),\n strokeWidth: strokeWidth,\n };\n return react.createElement(Circle, props);\n}\n\nexport class ProgressBar {\n constructor() {\n }\n}\n\nexport function ProgressBar_$reflection() {\n return class_type(\"StenaWeather.WeatherServiceUI.Client.Components.Rc_progress.ProgressBar\", undefined, ProgressBar);\n}\n\n","import { toString, Union, Record } from \"../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { Response_Model_$reflection } from \"../StenaWeather.WeatherServiceUI.Shared/Dashboards/API.js\";\nimport { union_type, record_type, list_type } from \"../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { ServerError_$reflection } from \"../StenaWeather.WeatherServiceUI.Shared/Errors.js\";\nimport { FSharpResult$2 } from \"../fable_modules/fable-library-js.4.19.3/Result.js\";\nimport { toArray as toArray_1, ofArray, map, where, singleton, empty } from \"../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { ModelUpdateStatus, ModelUpdateStatusModule_isUpToDate, ModelUpdateStatusModule_isToBeUpdated, ModelUpdateStatusModule_isOutdated } from \"../StenaWeather.Domain/Models.js\";\nimport { Cmd_none } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { onDashboardsAPI, Cmd_OfAsync_eitherAsResult } from \"../Server.js\";\nimport { add, utcNow, op_Subtraction, toUniversalTime, fromTicks } from \"../fable_modules/fable-library-js.4.19.3/DateOffset.js\";\nimport { toFloat64, op_Subtraction as op_Subtraction_1, op_Addition, toInt64 } from \"../fable_modules/fable-library-js.4.19.3/BigInt.js\";\nimport { fromTicks as fromTicks_1, op_Multiply, ticks as ticks_1 } from \"../fable_modules/fable-library-js.4.19.3/TimeSpan.js\";\nimport { compare, getTicks } from \"../fable_modules/fable-library-js.4.19.3/Date.js\";\nimport Dashboard$002Emodule from \"../../src/StenaWeather.WeatherServiceUI.Client/Pages/Dashboard.module.scss\";\nimport { toText, join } from \"../fable_modules/fable-library-js.4.19.3/String.js\";\nimport { createObj, stringHash, equals, comparePrimitives, defaultOf } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport { defaultOf as defaultOf_1 } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { TagModule_View } from \"../Components/StenaWebUI/Elements/Tag.js\";\nimport { ofList } from \"../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { formatToMultipleUnits, formatToWholeUnits } from \"../TimeSpan.js\";\nimport { TextModule_View } from \"../Components/StenaWebUI/Core/Text.js\";\nimport { DateTimeOffset_DateTimeWithTimezone, DateTimeOffset_dateTimeWithTimezone } from \"../Components/TimeZones/Components.js\";\nimport { WhiteSpaceType, UserSelectType, TextVariant, TextSize } from \"../Components/StenaWebUI/Core/Text.js\";\nimport { IconModule_View } from \"../Components/StenaWebUI/Icons/Icon.js\";\nimport { faCheckCircle, faExclamation, faExclamationTriangle, faCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { ModelUpdateStatus_value } from \"./Models.js\";\nimport { reactApi } from \"../fable_modules/Feliz.2.8.0/Interop.fs.js\";\nimport { SpaceModule_View } from \"../Components/StenaWebUI/Core/Space.js\";\nimport { RowModule_View } from \"../Components/StenaWebUI/Core/Row.js\";\nimport { ProgressBarModule_ViewLinear } from \"../Components/Rc-progress/rc-progress.js\";\nimport { React_useElmish_Z6C327F2E } from \"../fable_modules/Feliz.UseElmish.2.5.0/UseElmish.fs.js\";\nimport { ProgramModule_mkProgram } from \"../fable_modules/Fable.Elmish.4.2.0/program.fs.js\";\nimport { Array_except } from \"../fable_modules/fable-library-js.4.19.3/Seq2.js\";\nimport { toArray, collect, singleton as singleton_1, append, delay, toList } from \"../fable_modules/fable-library-js.4.19.3/Seq.js\";\nimport { PageTitle_title } from \"../SharedView.js\";\nimport { HeadingModule_View } from \"../Components/StenaWebUI/Core/Heading.js\";\nimport { StandardTableModule_view } from \"../Components/StenaWebUI/Grid/StandardTable.js\";\n\nexport class State extends Record {\n constructor(Warnings, Cautions, Updated) {\n super();\n this.Warnings = Warnings;\n this.Cautions = Cautions;\n this.Updated = Updated;\n }\n}\n\nexport function State_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.Dashboard.State\", [], State, () => [[\"Warnings\", list_type(Response_Model_$reflection())], [\"Cautions\", list_type(Response_Model_$reflection())], [\"Updated\", list_type(Response_Model_$reflection())]]);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"LoadModels\", \"OnModelsLoaded\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.Dashboard.Msg\", [], Msg, () => [[], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [list_type(Response_Model_$reflection()), ServerError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", list_type(Response_Model_$reflection())]], [[\"ErrorValue\", ServerError_$reflection()]]])]]]);\n}\n\nexport function init() {\n return [new State(empty(), empty(), empty()), singleton((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n}\n\nexport function update(msg, state) {\n if (msg.tag === 1) {\n const result = msg.fields[0];\n if (result.tag === 0) {\n const models = result.fields[0];\n return [new State(where((f) => ModelUpdateStatusModule_isOutdated(f.Status), models), where((f_1) => ModelUpdateStatusModule_isToBeUpdated(f_1.Status), models), where((f_2) => ModelUpdateStatusModule_isUpToDate(f_2.Status), models)), Cmd_none()];\n }\n else {\n return [state, Cmd_none()];\n }\n }\n else {\n return [state, Cmd_OfAsync_eitherAsResult(() => onDashboardsAPI((x) => x.GetModels()), (Item) => (new Msg(1, [Item])))];\n }\n}\n\nexport function getNextAlarmTriggeredDateTimeOffset(alertCoef, updateFreq, lastUpdated) {\n return fromTicks(toInt64(op_Addition(ticks_1(op_Multiply(alertCoef, updateFreq)), getTicks(toUniversalTime(lastUpdated)))), 0);\n}\n\nexport const cn = (() => {\n const styles = Dashboard$002Emodule;\n const cnFn = (name) => (styles[name]);\n const cnFns = (names) => map((x) => (styles[x]), names);\n return {\n className: cnFn,\n classes: cnFns,\n prop: {\n className: (arg) => [\"className\", cnFn(arg)],\n classes: (arg_1) => [\"className\", join(\" \", cnFns(arg_1))],\n },\n };\n})();\n\nconst StandardTable_constants_itemTypeInstance = defaultOf();\n\nexport const StandardTable_constants_modelColumnName = \"ModelName\";\n\nexport const StandardTable_constants_statusColumnName = \"Status\";\n\nexport const StandardTable_constants_updateFreqColumnName = \"UpdateFrequency\";\n\nexport const StandardTable_constants_lastUpdatedColumnName = \"Downloaded\";\n\nexport const StandardTable_constants_lastUpdatedDtColumnName = \"DownloadedDT\";\n\nexport const StandardTable_constants_forecastCreatedDtColumnName = \"LastUpdatedDT\";\n\nexport const StandardTable_constants_expectedUpdateColumnName = \"expectedUpdate\";\n\nexport const StandardTable_constants_expectedUpdateDtColumnName = \"expectedUpdateDT\";\n\nexport const StandardTable_constants_alarmCriteriaColumnName = \"alarmCriteria\";\n\nexport const StandardTable_constants_triggerAlarmColumnName = \"triggerAlarm\";\n\nexport const StandardTable_constants_triggerAlarmDtColumnName = \"triggerAlarmDT\";\n\nexport const StandardTable_constants_iconColumnName = \"infoIcon\";\n\nexport const StandardTable_constants_defaultColumnWidth = 130;\n\nexport const StandardTable_constants_warningsHeader = \"Warnings\";\n\nexport const StandardTable_constants_cautionsHeader = \"Cautions\";\n\nexport const StandardTable_constants_onTimeHeader = \"Updated on time\";\n\nexport function StandardTable_divs_emptyDiv(standardTable_divs_emptyDivInputProps) {\n const _arg = standardTable_divs_emptyDivInputProps._arg1;\n return defaultOf_1();\n}\n\nexport function StandardTable_divs_renderUpdateFreqCell(standardTable_divs_renderUpdateFreqCellInputProps) {\n const p = standardTable_divs_renderUpdateFreqCellInputProps.p;\n return TagModule_View(ofList(map((value) => value, ofArray([[\"variant\", \"passive\"], [\"size\", \"medium\"], [\"label\", formatToWholeUnits(p.item.UpdateFrequency)]])), {\n Compare: comparePrimitives,\n }));\n}\n\nexport function StandardTable_divs_renderSomeTimeAgoCell(p) {\n return TextModule_View(ofList(map((value_1) => value_1, singleton([\"children\", `${formatToMultipleUnits(op_Subtraction(utcNow(), DateTimeOffset_dateTimeWithTimezone(p)))} ago`])), {\n Compare: comparePrimitives,\n }));\n}\n\nexport function StandardTable_divs_renderExpectedUpdateCell(p) {\n if (compare(p.value, utcNow()) < 0) {\n return StandardTable_divs_renderSomeTimeAgoCell(p.value);\n }\n else {\n return TextModule_View(ofList(map((value_1) => value_1, ofArray([[\"children\", \"in \" + formatToMultipleUnits(op_Subtraction(DateTimeOffset_dateTimeWithTimezone(p.value), utcNow()))], [\"size\", new TextSize(1, [])]])), {\n Compare: comparePrimitives,\n }));\n }\n}\n\nexport function StandardTable_divs_renderLastUpdatedCell(p) {\n return StandardTable_divs_renderSomeTimeAgoCell(p.value);\n}\n\nexport function StandardTable_divs_renderDefaultDateTimeOffsetFormattedCell(p) {\n return TextModule_View(ofList(map((value) => value, singleton([\"children\", singleton(createElement(DateTimeOffset_DateTimeWithTimezone, {\n dateTime: p.value,\n }))])), {\n Compare: comparePrimitives,\n }));\n}\n\nexport function StandardTable_divs_renderCellForStatus(f) {\n let t_4, t_7, t_1;\n let icon;\n const matchValue = f.value;\n icon = ((matchValue.tag === 1) ? IconModule_View(ofList(map((value_1) => value_1, ofArray([[\"size\", 10], (t_4 = faCircle, [\"icon\", t_4]), [\"color\", \"var(--lhds-color-orange-500)\"]])), {\n Compare: comparePrimitives,\n })) : ((matchValue.tag === 2) ? IconModule_View(ofList(map((value_2) => value_2, ofArray([[\"size\", 10], (t_7 = faCircle, [\"icon\", t_7]), [\"color\", \"var(--lhds-color-red-500)\"]])), {\n Compare: comparePrimitives,\n })) : IconModule_View(ofList(map((value) => value, ofArray([[\"size\", 10], (t_1 = faCircle, [\"icon\", t_1]), [\"color\", \"var(--lhds-color-green-500)\"]])), {\n Compare: comparePrimitives,\n }))));\n const text = TextModule_View(ofList(map((value_4) => value_4, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(1, [])], [\"color\", \"var(--lhds-color-ui-500)\"], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", ModelUpdateStatus_value(f.item.Status)]])), {\n Compare: comparePrimitives,\n }));\n return createElement(\"div\", {\n className: cn.className(\"statusCell\"),\n children: reactApi.Children.toArray([icon, text]),\n });\n}\n\nexport function StandardTable_divs_renderIconCell(f) {\n let t_4, t_7, t_1;\n let icon;\n const matchValue = f.value;\n icon = ((matchValue.tag === 1) ? IconModule_View(ofList(map((value_1) => value_1, ofArray([[\"size\", 16], (t_4 = faExclamationTriangle, [\"icon\", t_4]), [\"color\", \"var(--lhds-color-orange-500)\"]])), {\n Compare: comparePrimitives,\n })) : ((matchValue.tag === 2) ? IconModule_View(ofList(map((value_2) => value_2, ofArray([[\"size\", 16], (t_7 = faExclamation, [\"icon\", t_7]), [\"color\", \"var(--lhds-color-red-500)\"]])), {\n Compare: comparePrimitives,\n })) : IconModule_View(ofList(map((value) => value, ofArray([[\"size\", 16], (t_1 = faCheckCircle, [\"icon\", t_1]), [\"color\", \"var(--lhds-color-green-500)\"]])), {\n Compare: comparePrimitives,\n }))));\n return createElement(\"div\", {\n className: cn.className(\"iconCell\"),\n children: icon,\n });\n}\n\nexport function StandardTable_divs_renderModelCell(p) {\n const elm = ofArray([TextModule_View(ofList(map((value_4) => value_4, ofArray([[\"variant\", new TextVariant(3, [])], [\"size\", new TextSize(0, [])], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", p.item.ModelName]])), {\n Compare: comparePrimitives,\n })), TextModule_View(ofList(map((value_6) => value_6, ofArray([[\"variant\", new TextVariant(0, [])], [\"size\", new TextSize(1, [])], [\"color\", \"var(--lhds-color-ui-500)\"], [\"userSelect\", new UserSelectType(6, [])], [\"whiteSpace\", new WhiteSpaceType(4, [])], [\"children\", toString(p.item.Provider)]])), {\n Compare: comparePrimitives,\n }))]);\n return createElement(\"div\", {\n className: cn.className(\"supplierCell\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n}\n\nexport function StandardTable_divs_renderAlarmCriteriaCell(p) {\n let p_1_2;\n let pct;\n const value = p.value * 100;\n pct = value.toString();\n const tagValue = formatToMultipleUnits((p.item.UpdateFrequency * p.value) - p.item.UpdateFrequency);\n const p_1_5 = ofList(map((value_7) => value_7, singleton([\"children\", ofArray([TextModule_View(ofList(map((value_3) => value_3, singleton([\"children\", pct + \"%\"])), {\n Compare: comparePrimitives,\n })), (p_1_2 = ofList(map((value_4) => value_4, empty()), {\n Compare: comparePrimitives,\n }), createElement(SpaceModule_View, {\n p: p_1_2,\n })), TagModule_View(ofList(map((value_5) => value_5, ofArray([[\"variant\", \"passive\"], [\"size\", \"medium\"], [\"label\", tagValue]])), {\n Compare: comparePrimitives,\n }))])])), {\n Compare: comparePrimitives,\n });\n return createElement(RowModule_View, {\n p: p_1_5,\n });\n}\n\nexport function StandardTable_divs_renderAlarmDateTimeOffset(p) {\n return TextModule_View(ofList(map((value) => value, ofArray([[\"children\", singleton(createElement(DateTimeOffset_DateTimeWithTimezone, {\n dateTime: p.value,\n }))], [\"size\", new TextSize(1, [])]])), {\n Compare: comparePrimitives,\n }));\n}\n\nexport function StandardTable_divs_renderAlarmProgressBar(p) {\n const nextAlarmDt = p.value;\n const textColor = equals(p.item.Status, new ModelUpdateStatus(2, [])) ? \"var(--lhds-color-red-500)\" : \"var(--lhds-color-ui-700)\";\n if (compare(nextAlarmDt, utcNow()) < 0) {\n return TextModule_View(ofList(map((value_1) => value_1, ofArray([[\"children\", `${formatToMultipleUnits(fromTicks_1(toInt64(op_Subtraction_1(getTicks(utcNow()), getTicks(nextAlarmDt)))))} ago`], [\"color\", textColor]])), {\n Compare: comparePrimitives,\n }));\n }\n else {\n const nextAlarmIn = op_Subtraction(nextAlarmDt, utcNow());\n const progressPct = ~~((toFloat64(ticks_1(nextAlarmIn)) / (p.item.OutdatedAlertCoefficient * toFloat64(ticks_1(p.item.UpdateFrequency)))) * 100) | 0;\n const elm = ofArray([createElement(\"div\", {\n className: cn.className(\"progressBar\"),\n children: ProgressBarModule_ViewLinear(ofList(map((value_12) => value_12, ofArray([[\"percent\", `${progressPct}`], [\"strokeColor\", ModelUpdateStatusModule_isUpToDate(p.item.Status) ? \"green\" : \"orange\"], [\"strokeWidth\", 4]])), {\n Compare: comparePrimitives,\n })),\n }), createElement(\"div\", {\n className: cn.className(\"progressLegend\"),\n children: TextModule_View(ofList(map((value_18) => value_18, ofArray([[\"children\", `in ${formatToMultipleUnits(nextAlarmIn)}`], [\"size\", new TextSize(1, [])]])), {\n Compare: comparePrimitives,\n })),\n })]);\n return createElement(\"div\", {\n className: cn.className(\"progressCell\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n }\n}\n\nexport function getNoDataText(header) {\n if (header === \"Warnings\") {\n return [\"There are no warnings.\", \"Everything is updated on time. No warning alarms in this moment.\"];\n }\n else {\n return [defaultOf(), \"There is no data available\"];\n }\n}\n\nexport function DashboardView() {\n const state_1 = React_useElmish_Z6C327F2E(() => ProgramModule_mkProgram(init, update, (_arg, _arg_1) => {\n }), undefined, [])[0];\n const warningsColumnOrder = [StandardTable_constants_iconColumnName, StandardTable_constants_modelColumnName, StandardTable_constants_statusColumnName, StandardTable_constants_updateFreqColumnName, StandardTable_constants_lastUpdatedColumnName, StandardTable_constants_lastUpdatedDtColumnName, StandardTable_constants_expectedUpdateColumnName, StandardTable_constants_expectedUpdateDtColumnName, StandardTable_constants_alarmCriteriaColumnName, StandardTable_constants_triggerAlarmColumnName, StandardTable_constants_triggerAlarmDtColumnName, StandardTable_constants_forecastCreatedDtColumnName];\n const columnOrder = Array_except([StandardTable_constants_triggerAlarmDtColumnName], warningsColumnOrder, {\n Equals: (x, y) => (x === y),\n GetHashCode: stringHash,\n });\n const elm = toList(delay(() => append(singleton_1(PageTitle_title(\"Dashboard\", \"All forecast models\")), delay(() => collect((matchValue) => {\n let elm_2, p_1_1, columnProps, columnProps_1, columnProps_2, columnProps_3, columnProps_4, columnProps_5, infoIconTooltipText, columnProps_6, columnProps_7, columnProps_8, columnProps_9, columnProps_10, columnProps_11;\n const header = matchValue[0];\n const patternInput_1 = getNoDataText(header);\n return singleton_1((elm_2 = ofArray([(p_1_1 = ofList(map((value_7) => value_7, ofArray([[\"children\", singleton(header)], [\"variant\", \"h5\"]])), {\n Compare: comparePrimitives,\n }), createElement(HeadingModule_View, {\n p: p_1_1,\n })), StandardTableModule_view(createObj(toList([[\"variant\", \"relaxed\"], [\"items\", toArray(toArray_1(matchValue[1]))], [\"noItemsHeader\", patternInput_1[0]], [\"noItemsLabel\", patternInput_1[1]], [\"config\", createObj(toList([[\"keyResolver\", (i) => i.ModelName], [\"disableSorting\", true], [\"rowBackgroundResolver\", (i_1) => {\n if (equals(i_1.Status, new ModelUpdateStatus(2, []))) {\n return {\n background: \"var(--lhds-color-red-50)\",\n };\n }\n else if (equals(i_1.Status, new ModelUpdateStatus(1, []))) {\n return {\n background: \"var(--lhds-color-orange-50)\",\n };\n }\n else {\n return {\n background: \"var(--swui-white)\",\n };\n }\n }], [\"columns\", createObj([(columnProps = createObj(toList([[\"name\", StandardTable_constants_iconColumnName], [\"itemValueResolver\", (i_2) => i_2.Status], [\"columnLabel\", \"\"], [\"width\", toText(`${40}px`)], [\"renderCell\", StandardTable_divs_renderIconCell]])), [columnProps.name, columnProps]), (columnProps_1 = createObj(toList([[\"name\", StandardTable_constants_modelColumnName], [\"itemValueResolver\", (value_8) => {\n }], [\"columnLabel\", \"Model/Supplier\"], [\"width\", toText(`${StandardTable_constants_defaultColumnWidth}px`)], [\"renderCell\", StandardTable_divs_renderModelCell]])), [columnProps_1.name, columnProps_1]), (columnProps_2 = createObj(toList([[\"name\", StandardTable_constants_statusColumnName], [\"itemValueResolver\", (i_3) => i_3.Status], [\"columnLabel\", \"Status\"], [\"width\", toText(`${StandardTable_constants_defaultColumnWidth}px`)], [\"renderCell\", StandardTable_divs_renderCellForStatus]])), [columnProps_2.name, columnProps_2]), (columnProps_3 = createObj(toList([[\"name\", StandardTable_constants_updateFreqColumnName], [\"itemValueResolver\", (i_4) => i_4.UpdateFrequency], [\"columnLabel\", \"Update freq.\"], [\"width\", toText(`${StandardTable_constants_defaultColumnWidth}px`)], [\"renderCell\", (p_3) => createElement(StandardTable_divs_renderUpdateFreqCell, {\n p: p_3,\n })]])), [columnProps_3.name, columnProps_3]), (columnProps_4 = createObj(toList([[\"name\", StandardTable_constants_lastUpdatedColumnName], [\"itemValueResolver\", (i_5) => i_5.Downloaded], [\"columnLabel\", \"Last updated\"], [\"width\", toText(`${StandardTable_constants_defaultColumnWidth}px`)], [\"renderCell\", StandardTable_divs_renderLastUpdatedCell]])), [columnProps_4.name, columnProps_4]), (columnProps_5 = createObj(toList([[\"name\", StandardTable_constants_lastUpdatedDtColumnName], [\"itemValueResolver\", (i_6) => i_6.Downloaded], [\"columnLabel\", \"Last updated date time\"], (infoIconTooltipText = \"Definition: File transfers: date when forecast was available for consumption in Weather Service. API based model: date when forecast was created by weather supplier.\", [\"infoIconTooltipText\", infoIconTooltipText]), [\"width\", toText(`${StandardTable_constants_defaultColumnWidth}px`)], [\"renderCell\", StandardTable_divs_renderDefaultDateTimeOffsetFormattedCell]])), [columnProps_5.name, columnProps_5]), (columnProps_6 = createObj(toList([[\"name\", StandardTable_constants_expectedUpdateColumnName], [\"itemValueResolver\", (i_7) => add(i_7.Downloaded, i_7.UpdateFrequency)], [\"columnLabel\", \"Expected update time\"], [\"width\", toText(`${StandardTable_constants_defaultColumnWidth}px`)], [\"renderCell\", StandardTable_divs_renderExpectedUpdateCell]])), [columnProps_6.name, columnProps_6]), (columnProps_7 = createObj(toList([[\"name\", StandardTable_constants_expectedUpdateDtColumnName], [\"itemValueResolver\", (i_8) => add(i_8.Downloaded, i_8.UpdateFrequency)], [\"columnLabel\", \"Expected update date time\"], [\"width\", toText(`${StandardTable_constants_defaultColumnWidth}px`)], [\"renderCell\", StandardTable_divs_renderDefaultDateTimeOffsetFormattedCell]])), [columnProps_7.name, columnProps_7]), (columnProps_8 = createObj(toList([[\"name\", StandardTable_constants_alarmCriteriaColumnName], [\"itemValueResolver\", (i_9) => i_9.OutdatedAlertCoefficient], [\"columnLabel\", \"Alarm criteria\"], [\"width\", toText(`${StandardTable_constants_defaultColumnWidth}px`)], [\"infoIconTooltipText\", \"% delay allowed\"], [\"renderCell\", StandardTable_divs_renderAlarmCriteriaCell]])), [columnProps_8.name, columnProps_8]), (columnProps_9 = createObj(toList([[\"name\", StandardTable_constants_triggerAlarmColumnName], [\"itemValueResolver\", (i_10) => getNextAlarmTriggeredDateTimeOffset(i_10.OutdatedAlertCoefficient, i_10.UpdateFrequency, i_10.Downloaded)], [\"columnLabel\", (header === StandardTable_constants_warningsHeader) ? \"\" : \"Trigger alarm\"], [\"width\", toText(`${(header === StandardTable_constants_warningsHeader) ? StandardTable_constants_defaultColumnWidth : (StandardTable_constants_defaultColumnWidth * 2)}px`)], [\"renderCell\", (header === StandardTable_constants_warningsHeader) ? ((arg00$0040_1) => createElement(StandardTable_divs_emptyDiv, {})) : (StandardTable_divs_renderAlarmProgressBar)]])), [columnProps_9.name, columnProps_9]), (columnProps_10 = createObj(toList([[\"name\", StandardTable_constants_triggerAlarmDtColumnName], [\"itemValueResolver\", (i_11) => getNextAlarmTriggeredDateTimeOffset(i_11.OutdatedAlertCoefficient, i_11.UpdateFrequency, i_11.Downloaded)], [\"columnLabel\", \"Trigger alarm date time\"], [\"width\", toText(`${StandardTable_constants_defaultColumnWidth}px`)], [\"renderCell\", StandardTable_divs_renderAlarmDateTimeOffset]])), [columnProps_10.name, columnProps_10]), (columnProps_11 = createObj(toList([[\"name\", StandardTable_constants_forecastCreatedDtColumnName], [\"itemValueResolver\", (i_12) => i_12.LastUpdated], [\"columnLabel\", \"Forecast created date time\"], [\"infoIconTooltipText\", \"Definition: Date when forecast was created at data center by the weather supplier\"], [\"width\", toText(`${StandardTable_constants_defaultColumnWidth}px`)], [\"renderCell\", StandardTable_divs_renderDefaultDateTimeOffsetFormattedCell]])), [columnProps_11.name, columnProps_11])])], [\"columnOrder\", (header === StandardTable_constants_warningsHeader) ? warningsColumnOrder : columnOrder]]))]])))]), createElement(\"div\", {\n className: cn.className(\"tableWithHeading\"),\n children: reactApi.Children.toArray(Array.from(elm_2)),\n })));\n }, [[StandardTable_constants_warningsHeader, state_1.Warnings], [StandardTable_constants_cautionsHeader, state_1.Cautions], [StandardTable_constants_onTimeHeader, state_1.Updated]])))));\n return createElement(\"div\", {\n className: cn.className(\"contentDiv\"),\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n}\n\n","\nexport const msToKnotsFactor = 1.94384;\n\nexport function msToKnots(ms) {\n return (ms / 1) * (msToKnotsFactor * 1);\n}\n\nexport function knotsToMs(knots) {\n return ((knots / 1) / msToKnotsFactor) * 1;\n}\n\n","import { bind, map } from \"./fable_modules/fable-library-js.4.19.3/Option.js\";\n\nexport const Impl_allowsPassiveEvents = (() => {\n let passive = false;\n try {\n if ((typeof window !== 'undefined') && (typeof window.addEventListener === 'function')) {\n const options = {\n passive: true,\n };\n window.addEventListener(\"testPassiveEventSupport\", (value) => {\n }, options);\n window.removeEventListener(\"testPassiveEventSupport\", (value_1) => {\n });\n }\n }\n catch (matchValue) {\n }\n return passive;\n})();\n\nexport const Impl_defaultPassive = {\n passive: true,\n};\n\nexport function Impl_adjustPassive(maybeOptions) {\n return map((options) => {\n if (options.passive && !Impl_allowsPassiveEvents) {\n return {\n capture: options.capture,\n once: options.once,\n passive: false,\n };\n }\n else {\n return options;\n }\n }, maybeOptions);\n}\n\nexport function Impl_createRemoveOptions(maybeOptions) {\n return bind((options) => {\n if (options.capture) {\n return {\n capture: true,\n };\n }\n else {\n return undefined;\n }\n }, maybeOptions);\n}\n\n","export default __webpack_public_path__ + \"628ca35a95e006c340412e5af7e25d29.svg\";","import { createElement } from \"react\";\nimport { createObj } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { singleton, append, delay, toList } from \"../fable_modules/fable-library-js.4.19.3/Seq.js\";\nimport { singleton as singleton_1, ofArray } from \"../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { reactApi } from \"../fable_modules/Feliz.2.8.0/Interop.fs.js\";\n\nexport function ship_at_quay(colorCode, isFlipped) {\n return {\n Height: 300,\n Svg: createElement(\"g\", createObj(toList(delay(() => append(singleton([\"viewBox\", (((((0 + \" \") + 0) + \" \") + 300) + \" \") + 300]), delay(() => append(isFlipped ? singleton([\"transform\", (((((((((((\"matrix(\" + -1) + \",\") + 0) + \",\") + 0) + \",\") + 1) + \",\") + 316) + \",\") + 16) + \")\"]) : singleton([\"transform\", (((\"translate(\" + -16) + \",\") + 16) + \")\"]), delay(() => {\n let elements, path, path_1, path_2, path_3, path_4, path_5, path_6, path_7, path_8;\n return singleton((elements = ofArray([createElement(\"path\", createObj(ofArray([[\"clipRule\", \"evenodd\"], (path = \"m 71.896687,149.1768 187.815933,-0.35918 0.0504,26.44577 c 0.003,1.47639 -1.1808,2.67504 -2.64305,2.67786 -1.46224,0.003 -2.6495,-1.19178 -2.65272,-2.66717 l -0.0408,-21.10065 -177.223687,0.33879 0.04023,21.10018 c 0.0028,1.47635 -1.180409,2.67509 -2.642751,2.67789 -1.462442,0.003 -2.650203,-1.19186 -2.653003,-2.66821 z\", [\"d\", path]), [\"fill\", colorCode]]))), createElement(\"path\", createObj(ofArray([[\"clipRule\", \"evenodd\"], (path_1 = \"m 123.77009,90.112417 103.07086,-0.196889 0.095,49.501852 -103.16276,0.19699 -0.47914,-0.19394 c -12.12744,-4.90815 -19.85876,-9.88163 -24.092928,-14.91315 -2.146215,-2.55016 -3.450831,-5.18339 -3.900041,-7.87429 -0.451561,-2.70539 -0.0065,-5.28095 1.048957,-7.64374 2.06097,-4.61402 6.459092,-8.45939 11.289262,-11.494359 4.89907,-3.0783 10.59172,-5.539284 15.72726,-7.248157 z m 0.86431,5.299334 c -4.73535,1.604666 -9.85285,3.852556 -14.18398,6.573909 -4.5221,2.84147 -7.85116,5.99033 -9.27091,9.1689 -0.68501,1.53355 -0.91873,3.0539 -0.65992,4.6041 0.26115,1.56479 1.05609,3.34685 2.72655,5.33172 3.35294,3.98422 9.98612,8.4912 21.55291,13.22109 l 96.83613,-0.18492 -0.0748,-38.899979 z\", [\"d\", path_1]), [\"fill\", colorCode]]))), createElement(\"path\", createObj(ofArray([[\"clipRule\", \"evenodd\"], (path_2 = \"m 175.42148,104.57222 26.70013,1.64015 0.0319,17.0126 -26.05997,1.72908 -0.40576,-0.10886 c -4.4712,-1.19904 -7.35117,-3.06574 -8.83398,-5.54583 -1.52799,-2.55516 -1.21448,-5.14133 -0.64185,-6.87567 1.35833,-4.12088 4.87521,-5.79204 8.5194,-7.52363 0.0321,-0.0152 0.0642,-0.0303 0.0963,-0.0455 z m 1.00042,5.44873 c -3.65739,1.76524 -4.7656,2.60182 -5.27106,4.13374 -0.27155,0.82485 -0.28905,1.59919 0.14399,2.32286 0.4605,0.77076 1.75585,2.03687 5.31045,3.05354 l 20.32179,-1.34835 -0.0128,-6.90292 z\", [\"d\", path_2]), [\"fill\", colorCode]]))), createElement(\"path\", createObj(ofArray([[\"clipRule\", \"evenodd\"], (path_3 = \"m 130.04374,101.74791 c -0.003,-1.60825 1.16704,-2.914093 2.61356,-2.916927 l 3.49738,-0.0066 c 1.44653,-0.0028 2.62167,1.298683 2.62471,2.906843 0.003,1.60815 -1.16704,2.91409 -2.61357,2.91692 l -3.49737,0.007 c -1.44652,0.003 -2.62158,-1.29867 -2.62471,-2.90684 z\", [\"d\", path_3]), [\"fill\", colorCode]]))), createElement(\"path\", createObj(ofArray([[\"clipRule\", \"evenodd\"], (path_4 = \"m 130.0947,128.31747 c -0.003,-1.40712 1.16769,-2.5501 2.6142,-2.55284 l 3.49739,-0.007 c 1.44652,-0.003 2.62133,1.13572 2.62395,2.54293 0.003,1.40712 -1.16768,2.5501 -2.61419,2.55284 l -3.49739,0.007 c -1.44652,0.003 -2.62133,-1.13572 -2.62396,-2.54293 z\", [\"d\", path_4]), [\"fill\", colorCode]]))), createElement(\"path\", createObj(ofArray([[\"clipRule\", \"evenodd\"], (path_5 = \"m 141.74212,128.29537 c -0.003,-1.40711 1.16778,-2.55009 2.61429,-2.55283 l 3.49739,-0.007 c 1.44652,-0.003 2.62123,1.13572 2.62395,2.54294 0.003,1.40712 -1.16778,2.55009 -2.61419,2.55284 l -3.49739,0.007 c -1.44652,0.003 -2.62133,-1.13572 -2.62405,-2.54294 z\", [\"d\", path_5]), [\"fill\", colorCode]]))), createElement(\"path\", createObj(ofArray([[\"clipRule\", \"evenodd\"], (path_6 = \"m 153.38963,128.27328 c -0.003,-1.40713 1.26543,-2.5503 2.83247,-2.55324 l 3.78883,-0.007 c 1.56704,-0.003 2.83961,1.13533 2.84223,2.54254 0.003,1.40712 -1.26543,2.55029 -2.83247,2.55324 l -3.78884,0.007 c -1.56703,0.003 -2.8396,-1.13532 -2.84222,-2.54253 z\", [\"d\", path_6]), [\"fill\", colorCode]]))), createElement(\"path\", createObj(ofArray([[\"clipRule\", \"evenodd\"], (path_7 = \"m 141.69172,101.72195 c -0.003,-1.60827 1.16705,-2.914193 2.61357,-2.916928 l 3.49738,-0.0066 c 1.44652,-0.0028 2.62157,1.298674 2.62471,2.906834 0.003,1.60816 -1.16714,2.91409 -2.61366,2.91682 l -3.49729,0.007 c -1.44651,0.003 -2.62167,-1.29868 -2.62471,-2.90684 z\", [\"d\", path_7]), [\"fill\", colorCode]]))), createElement(\"path\", createObj(ofArray([[\"clipRule\", \"evenodd\"], (path_8 = \"m 153.33914,101.69985 c -0.003,-1.60826 1.2648,-2.914384 2.83184,-2.917332 l 3.78882,-0.0072 c 1.56705,-0.003 2.83995,1.298275 2.84298,2.906435 0.003,1.60816 -1.26479,2.91429 -2.83183,2.91723 l -3.78883,0.007 c -1.56704,0.003 -2.83985,-1.29827 -2.84298,-2.90644 z\", [\"d\", path_8]), [\"fill\", colorCode]])))]), [\"children\", reactApi.Children.toArray(Array.from(elements))]));\n })))))))),\n Width: 300,\n };\n}\n\nexport function directionArrow(colorCode, strokeColorCode) {\n let elements, path;\n return {\n Height: 51,\n Svg: createElement(\"g\", createObj(ofArray([[\"transform\", (((\"translate(\" + -16) + \",\") + 0) + \")\"], (elements = singleton_1(createElement(\"path\", createObj(ofArray([[\"fill\", colorCode], [\"stroke\", strokeColorCode], (path = \"m 181.80332,33.45703 c 0.38008,0.88018 0.20004,1.9004 -0.46009,2.60055 L 167.74037,50.4606 c -0.4501,0.4801 -1.08023,0.75016 -1.74037,0.75016 -0.66014,0 -1.29027,-0.27006 -1.74037,-0.75016 L 150.65677,36.05758 c -0.66013,-0.70015 -0.84017,-1.72037 -0.46009,-2.60055 0.38008,-0.88019 1.24026,-1.45031 2.20046,-1.45031 h 7.20151 V 3.20067 C 159.59865,1.4303 161.02895,0 162.79933,0 h 6.40134 c 1.77037,0 3.20068,1.4303 3.20068,3.20067 v 28.80605 h 7.20151 c 0.9602,0 1.82038,0.57012 2.20046,1.45031 z\", [\"d\", path])])))), [\"children\", reactApi.Children.toArray(Array.from(elements))])]))),\n Width: 32,\n };\n}\n\n","import { fromHours, fromMinutes } from \"../fable_modules/fable-library-js.4.19.3/TimeSpan.js\";\nimport { toString as toString_1, Union, Record } from \"../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { PortWindWeather_Default_Z53C0511E, SensorId__get_Value, SensorId, PortWindWeatherResult_$reflection, SensorId_$reflection, SensorMetaData_$reflection, PortWindWeather_$reflection } from \"../StenaWeather.Domain/PortWind.js\";\nimport { anonRecord_type, unit_type, lambda_type, float64_type, string_type, bool_type, list_type, union_type, record_type, class_type, option_type } from \"../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { Point_$reflection } from \"../StenaWeather.Domain/Forecast.js\";\nimport { choose as choose_1, chunkBySize, tryFind, toArray, reverse, ofArray, replicate, map, sortByDescending, tryHead, head, isEmpty, filter, singleton, empty } from \"../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { msToKnots } from \"../StenaWeather.Domain/Units.js\";\nimport { curry2, int32ToString, safeHash, createObj, comparePrimitives, equals, round } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { ServerError_$reflection } from \"../StenaWeather.WeatherServiceUI.Shared/Errors.js\";\nimport { FSharpResult$2 } from \"../fable_modules/fable-library-js.4.19.3/Result.js\";\nimport { Cmd_none, Cmd_batch } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { PageTitle_titleWith, ErrorView_Cmd_error, ErrorView_Cmd_ofError } from \"../SharedView.js\";\nimport { map2, toArray as toArray_1, orElse, bind, map as map_1, value as value_133, defaultArg } from \"../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { onPortWindAPI, Cmd_OfAsync_eitherAsResult } from \"../Server.js\";\nimport { toString, compare } from \"../fable_modules/fable-library-js.4.19.3/Date.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_perform } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { sleep } from \"../fable_modules/fable-library-js.4.19.3/Async.js\";\nimport { FSharpMap__TryFind, ofList } from \"../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { tryHead as tryHead_1, empty as empty_1, choose, isEmpty as isEmpty_1, singleton as singleton_1, append, delay, toList } from \"../fable_modules/fable-library-js.4.19.3/Seq.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport * as react from \"react\";\nimport { ColumnModule_View } from \"../Components/StenaWebUI/Core/Column.js\";\nimport { RowModule_View } from \"../Components/StenaWebUI/Core/Row.js\";\nimport { reactApi } from \"../fable_modules/Feliz.2.8.0/Interop.fs.js\";\nimport { SpaceModule_View } from \"../Components/StenaWebUI/Core/Space.js\";\nimport PortWindDashboard$002Emodule from \"../../src/StenaWeather.WeatherServiceUI.Client/Pages/PortWindDashboard.module.scss\";\nimport { printf, toText, join } from \"../fable_modules/fable-library-js.4.19.3/String.js\";\nimport { faChartLine, faTh, faMapMarkedAlt, faMoon, faWater, faWind, faLongArrowAltUp, faTornado, faFan } from \"@fortawesome/free-solid-svg-icons\";\nimport { List_distinct } from \"../fable_modules/fable-library-js.4.19.3/Seq2.js\";\nimport { map as map_2 } from \"../fable_modules/fable-library-js.4.19.3/Array.js\";\nimport { reactApi as reactApi_1 } from \"../fable_modules/Feliz.2.8.0/Interop.fs.js\";\nimport { ResponsiveContainer, ComposedChart, Line, Area, Legend, Tooltip, YAxis, XAxis, CartesianGrid } from \"recharts\";\nimport { rotateDirection180, round as round_1, timeInContext } from \"./Common.js\";\nimport { debounce } from \"../Utils.js\";\nimport { Impl_createRemoveOptions, Impl_adjustPassive } from \"../Listeners.js\";\nimport { useEffect } from \"../fable_modules/Feliz.2.8.0/ReactInterop.js\";\nimport { createDisposable, useCallbackRef } from \"../fable_modules/Feliz.2.8.0/Internal.fs.js\";\nimport { timeZoneContext } from \"../Components/TimeZones/Context.js\";\nimport { React_useElmish_Z6C327F2E } from \"../fable_modules/Feliz.UseElmish.2.5.0/UseElmish.fs.js\";\nimport { ProgramModule_mkProgram } from \"../fable_modules/Fable.Elmish.4.2.0/program.fs.js\";\nimport { min, max } from \"../fable_modules/fable-library-js.4.19.3/Double.js\";\nimport { IconModule_View } from \"../Components/StenaWebUI/Icons/Icon.js\";\nimport { SwitchModule_View } from \"../Components/StenaWebUI/Forms/Switch.js\";\nimport { DateTimeOffset_dateTimeWithTimezone, DateTimeOffset_dateTimeStr } from \"../Components/TimeZones/Components.js\";\nimport map_marker from \"../../src/StenaWeather.WeatherServiceUI.Client/images/map-marker.svg\";\nimport { TileLayer } from \"react-leaflet\";\nimport { Icon } from \"leaflet\";\nimport { Marker_View } from \"../Components/Leaflet/Marker.js\";\nimport { MapContainer_View } from \"../Components/Leaflet/Container.js\";\nimport { defaultOf } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { directionArrow, ship_at_quay as ship_at_quay_2 } from \"./ship_at_quay.svg.js\";\nimport { op_UnaryNegation_Int32 } from \"../fable_modules/fable-library-js.4.19.3/Int32.js\";\n\nexport const autoReloadPeriod = fromMinutes(1);\n\nexport class PortWindData extends Record {\n constructor(Weather, Location, LastUpdated) {\n super();\n this.Weather = Weather;\n this.Location = Location;\n this.LastUpdated = LastUpdated;\n }\n}\n\nexport function PortWindData_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWindDashboard.PortWindData\", [], PortWindData, () => [[\"Weather\", option_type(PortWindWeather_$reflection())], [\"Location\", option_type(Point_$reflection())], [\"LastUpdated\", class_type(\"System.DateTimeOffset\")]]);\n}\n\nexport class MainView extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Dashboard\", \"TrendGraph\"];\n }\n}\n\nexport function MainView_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWindDashboard.MainView\", [], MainView, () => [[], []]);\n}\n\nexport class Color extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Font\", \"Background\", \"Inactive\", \"BoxFont\", \"BoxBackground\", \"TrendLineWind\", \"TrendLineGustWind\", \"TrendLineAverageWind\", \"TrendLineWindDirection\", \"TrendLineTideHeight\", \"TrendLineTidalFlowSpeed\", \"TrendLineWaveHeight\"];\n }\n}\n\nexport function Color_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWindDashboard.Color\", [], Color, () => [[], [], [], [], [], [], [], [], [], [], [], []]);\n}\n\nexport class Theme extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Light\", \"Dark\"];\n }\n}\n\nexport function Theme_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWindDashboard.Theme\", [], Theme, () => [[], []]);\n}\n\nexport function ThemeModule_colorMapping(theme) {\n if (theme.tag === 1) {\n return (_arg_1) => ((_arg_1.tag === 1) ? \"var(--lhds-color-ui-900)\" : ((_arg_1.tag === 2) ? \"var(--lhds-color-ui-800)\" : ((_arg_1.tag === 3) ? \"var(--lhds-color-blue-600)\" : ((_arg_1.tag === 4) ? \"var(--lhds-color-blue-900)\" : ((_arg_1.tag === 5) ? \"var(--lhds-color-blue-800)\" : ((_arg_1.tag === 6) ? \"var(--lhds-color-blue-500)\" : ((_arg_1.tag === 7) ? \"var(--lhds-color-blue-600)\" : ((_arg_1.tag === 8) ? \"var(--lhds-color-orange-900)\" : ((_arg_1.tag === 9) ? \"var(--lhds-color-green-900)\" : ((_arg_1.tag === 10) ? \"var(--lhds-color-green-600)\" : ((_arg_1.tag === 11) ? \"var(--lhds-color-turquoise-900)\" : \"var(--lhds-color-blue-400)\")))))))))));\n }\n else {\n return (_arg) => ((_arg.tag === 1) ? \"var(--lhds-color-ui-100)\" : ((_arg.tag === 2) ? \"var(--lhds-color-ui-400)\" : ((_arg.tag === 3) ? \"var(--lhds-color-ui-100)\" : ((_arg.tag === 4) ? \"var(--lhds-color-blue-600)\" : ((_arg.tag === 5) ? \"var(--lhds-color-blue-500)\" : ((_arg.tag === 6) ? \"var(--lhds-color-blue-800)\" : ((_arg.tag === 7) ? \"var(--lhds-color-blue-300)\" : ((_arg.tag === 8) ? \"var(--lhds-color-orange-600)\" : ((_arg.tag === 9) ? \"var(--lhds-color-green-600)\" : ((_arg.tag === 10) ? \"var(--lhds-color-green-300)\" : ((_arg.tag === 11) ? \"var(--lhds-color-turquoise-600)\" : \"var(--lhds-color-ui-800)\")))))))))));\n }\n}\n\nexport class State extends Record {\n constructor(Sensors, SelectedSensor, Weather, WeatherHistory, UnitsMetersPerSeconds, MainView, Theme) {\n super();\n this.Sensors = Sensors;\n this.SelectedSensor = SelectedSensor;\n this.Weather = Weather;\n this.WeatherHistory = WeatherHistory;\n this.UnitsMetersPerSeconds = UnitsMetersPerSeconds;\n this.MainView = MainView;\n this.Theme = Theme;\n }\n}\n\nexport function State_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWindDashboard.State\", [], State, () => [[\"Sensors\", list_type(SensorMetaData_$reflection())], [\"SelectedSensor\", option_type(SensorId_$reflection())], [\"Weather\", option_type(PortWindData_$reflection())], [\"WeatherHistory\", list_type(PortWindWeather_$reflection())], [\"UnitsMetersPerSeconds\", bool_type], [\"MainView\", MainView_$reflection()], [\"Theme\", Theme_$reflection()]]);\n}\n\nexport function State_get_Empty() {\n return new State(empty(), undefined, undefined, empty(), true, new MainView(0, []), new Theme(0, []));\n}\n\nexport function State__get_UnitText(state) {\n if (state.UnitsMetersPerSeconds) {\n return \"m/s\";\n }\n else {\n return \"knots\";\n }\n}\n\nexport function State__get_UnitValue(state) {\n const f1_1 = state.UnitsMetersPerSeconds ? ((value) => value) : (msToKnots);\n return (arg_1) => round(f1_1(arg_1), 3);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"GetSensors\", \"SensorsLoaded\", \"SensorSelected\", \"GetWeather\", \"WeatherLoaded\", \"UnitsChanged\", \"MainViewSwitched\", \"ThemeSwitched\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWindDashboard.Msg\", [], Msg, () => [[], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [list_type(SensorMetaData_$reflection()), ServerError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", list_type(SensorMetaData_$reflection())]], [[\"ErrorValue\", ServerError_$reflection()]]])]], [[\"Item\", SensorId_$reflection()]], [], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [PortWindWeatherResult_$reflection(), ServerError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", PortWindWeatherResult_$reflection()]], [[\"ErrorValue\", ServerError_$reflection()]]])]], [[\"Item\", bool_type]], [], []]);\n}\n\nexport function init() {\n return [State_get_Empty(), Cmd_batch(singleton(singleton((dispatch) => {\n dispatch(new Msg(0, []));\n })))];\n}\n\nexport function update(msg, state) {\n let msg_1;\n switch (msg.tag) {\n case 1:\n if (msg.fields[0].tag === 1) {\n return [state, ErrorView_Cmd_ofError(msg.fields[0].fields[0])];\n }\n else {\n const sensors_1 = filter((s) => {\n if (s.Enabled) {\n return s.Visible;\n }\n else {\n return false;\n }\n }, msg.fields[0].fields[0]);\n if (isEmpty(sensors_1)) {\n return [state, ErrorView_Cmd_error(\"Sensor list is empty\")];\n }\n else {\n return [new State(sensors_1, state.SelectedSensor, state.Weather, state.WeatherHistory, state.UnitsMetersPerSeconds, state.MainView, state.Theme), (msg_1 = (new Msg(2, [defaultArg(state.SelectedSensor, head(sensors_1).SensorId)])), singleton((dispatch) => {\n dispatch(msg_1);\n }))];\n }\n }\n case 2:\n return [new State(state.Sensors, msg.fields[0], state.Weather, state.WeatherHistory, state.UnitsMetersPerSeconds, state.MainView, state.Theme), singleton((dispatch_1) => {\n dispatch_1(new Msg(3, []));\n })];\n case 3:\n return [state, Cmd_OfAsync_eitherAsResult(() => onPortWindAPI((x_1) => x_1.GetWeather(value_133(state.SelectedSensor), fromHours(3), fromHours(1))), (Item_1) => (new Msg(4, [Item_1])))];\n case 4:\n if (msg.fields[0].tag === 1) {\n return [state, ErrorView_Cmd_ofError(msg.fields[0].fields[0])];\n }\n else {\n const r = msg.fields[0].fields[0];\n return [new State(state.Sensors, state.SelectedSensor, new PortWindData(tryHead(sortByDescending((x_2) => x_2.DateTime, r.Weather, {\n Compare: compare,\n })), r.Location, r.LastUpdated), r.Weather, state.UnitsMetersPerSeconds, state.MainView, state.Theme), Cmd_OfAsyncWith_perform((x_4) => {\n Cmd_OfAsync_start(x_4);\n }, () => sleep(~~autoReloadPeriod), undefined, () => (new Msg(3, [])))];\n }\n case 5:\n return [new State(state.Sensors, state.SelectedSensor, state.Weather, state.WeatherHistory, msg.fields[0], state.MainView, state.Theme), Cmd_none()];\n case 6:\n return [new State(state.Sensors, state.SelectedSensor, state.Weather, state.WeatherHistory, state.UnitsMetersPerSeconds, equals(state.MainView, new MainView(0, [])) ? (new MainView(1, [])) : (new MainView(0, [])), state.Theme), Cmd_none()];\n case 7:\n return [new State(state.Sensors, state.SelectedSensor, state.Weather, state.WeatherHistory, state.UnitsMetersPerSeconds, state.MainView, equals(state.Theme, new Theme(0, [])) ? (new Theme(1, [])) : (new Theme(0, []))), Cmd_none()];\n default:\n return [state, Cmd_OfAsync_eitherAsResult(() => onPortWindAPI((x) => x.GetSensors()), (Item) => (new Msg(1, [Item])))];\n }\n}\n\nexport function ViewHelpers_mkColumnWith(p, x) {\n const p_1_1 = ofList(map((value) => value, toList(delay(() => append(p, delay(() => singleton_1([\"children\", x])))))), {\n Compare: comparePrimitives,\n });\n return createElement(ColumnModule_View, {\n p: p_1_1,\n });\n}\n\nexport function ViewHelpers_mkColumn(x) {\n const p_1_1 = ofList(map((value) => value, singleton([\"children\", x])), {\n Compare: comparePrimitives,\n });\n return createElement(ColumnModule_View, {\n p: p_1_1,\n });\n}\n\nexport function ViewHelpers_mkRowWith(p, x) {\n const p_1_1 = ofList(map((value) => value, toList(delay(() => append(p, delay(() => singleton_1([\"children\", x])))))), {\n Compare: comparePrimitives,\n });\n return createElement(RowModule_View, {\n p: p_1_1,\n });\n}\n\nexport function ViewHelpers_mkRow(x) {\n const p_1_1 = ofList(map((value) => value, singleton([\"children\", x])), {\n Compare: comparePrimitives,\n });\n return createElement(RowModule_View, {\n p: p_1_1,\n });\n}\n\nexport function ViewHelpers_divWith(p, x) {\n return createElement(\"div\", createObj(toList(delay(() => append(p, delay(() => singleton_1([\"children\", reactApi.Children.toArray(Array.from(x))])))))));\n}\n\nexport function ViewHelpers_spanWith(p, x) {\n return createElement(\"span\", createObj(toList(delay(() => append(p, delay(() => singleton_1([\"children\", reactApi.Children.toArray(Array.from(x))])))))));\n}\n\nexport function ViewHelpers_spaceN(n) {\n let p_1_1;\n return replicate(n, (p_1_1 = ofList(map((value) => value, empty()), {\n Compare: comparePrimitives,\n }), createElement(SpaceModule_View, {\n p: p_1_1,\n })));\n}\n\nexport function ViewHelpers_mkTextWith(f, color, size, p, s) {\n return f(singleton([\"style\", createObj(toList(delay(() => append(singleton_1([\"color\", color]), delay(() => append(singleton_1([\"fontSize\", size]), delay(() => p)))))))]), singleton(s));\n}\n\nexport function ViewHelpers_mkTextSizeUnit(color, size, p, s) {\n return ViewHelpers_mkTextWith(ViewHelpers_spanWith, color, size, p, s);\n}\n\nexport function ViewHelpers_mkText(color, size, p, s) {\n return ViewHelpers_mkTextWith(ViewHelpers_spanWith, color, size + \"vmin\", p, s);\n}\n\nexport function ViewHelpers_leftRightColumns(isSmall, width, left, right) {\n if (isSmall) {\n return ViewHelpers_mkColumn(toList(delay(() => append(singleton_1(ViewHelpers_mkRow(singleton(ViewHelpers_mkColumn(left)))), delay(() => append(ViewHelpers_spaceN(1), delay(() => singleton_1(ViewHelpers_mkRow(singleton(ViewHelpers_mkColumn(right)))))))))));\n }\n else {\n return ViewHelpers_mkRow(singleton(ViewHelpers_mkColumnWith([[\"width\", width]], singleton(ViewHelpers_mkRowWith([[\"justifyContent\", \"space-between\"]], ofArray([ViewHelpers_mkColumn(left), ViewHelpers_mkColumnWith([[\"justifyContent\", \"flex-end\"]], right)]))))));\n }\n}\n\nexport const ViewHelpers_cn = (() => {\n const styles = PortWindDashboard$002Emodule;\n const cnFn = (name) => (styles[name]);\n const cnFns = (names) => map((x) => (styles[x]), names);\n return {\n className: cnFn,\n classes: cnFns,\n prop: {\n className: (arg) => [\"className\", cnFn(arg)],\n classes: (arg_1) => [\"className\", join(\" \", cnFns(arg_1))],\n },\n };\n})();\n\nexport class WeatherValue_TrendType extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Line\", \"Area\"];\n }\n}\n\nexport function WeatherValue_TrendType_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWindDashboard.WeatherValue.TrendType\", [], WeatherValue_TrendType, () => [[], []]);\n}\n\nexport class WeatherValue_Unit extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"MsOrKnots\", \"Degree\", \"Meter\"];\n }\n}\n\nexport function WeatherValue_Unit_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWindDashboard.WeatherValue.Unit\", [], WeatherValue_Unit, () => [[], [], []]);\n}\n\nexport class WeatherValue_Definition extends Record {\n constructor(Label, ChartName, Unit, Icon, ChartType, ChartColor, GetValue) {\n super();\n this.Label = Label;\n this.ChartName = ChartName;\n this.Unit = Unit;\n this.Icon = Icon;\n this.ChartType = ChartType;\n this.ChartColor = ChartColor;\n this.GetValue = GetValue;\n }\n}\n\nexport function WeatherValue_Definition_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWindDashboard.WeatherValue.Definition\", [], WeatherValue_Definition, () => [[\"Label\", string_type], [\"ChartName\", string_type], [\"Unit\", WeatherValue_Unit_$reflection()], [\"Icon\", string_type], [\"ChartType\", WeatherValue_TrendType_$reflection()], [\"ChartColor\", Color_$reflection()], [\"GetValue\", lambda_type(State_$reflection(), lambda_type(PortWindWeather_$reflection(), option_type(float64_type)))]]);\n}\n\nexport class WeatherValue_WeatherBox extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"WeatherValue\", \"WeatherDirection\", \"TrendChart\", \"MapBox\", \"RotatingDirectionSvg\"];\n }\n}\n\nexport function WeatherValue_WeatherBox_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWindDashboard.WeatherValue.WeatherBox\", [], WeatherValue_WeatherBox, () => [[[\"Item\", WeatherValue_Definition_$reflection()]], [[\"Item\", WeatherValue_Definition_$reflection()]], [[\"Item\", anonRecord_type([\"Label\", string_type], [\"OnClick\", lambda_type(unit_type, unit_type)])]], [[\"Item\", anonRecord_type([\"Label\", string_type])]], [[\"Item\", anonRecord_type([\"Flip\", bool_type], [\"Label\", string_type], [\"Svg\", class_type(\"Fable.React.ReactElement\")], [\"SvgArrow\", class_type(\"Fable.React.ReactElement\")], [\"SvgTransform\", list_type(class_type(\"Feliz.ISvgAttribute\"))], [\"WholeSvgTransform\", list_type(class_type(\"Feliz.ISvgAttribute\"))])]]]);\n}\n\nexport const WeatherValue_values = ofArray([new WeatherValue_Definition(\"Actual\", \"Wind\", new WeatherValue_Unit(0, []), faFan, new WeatherValue_TrendType(0, []), new Color(5, []), (state, point) => map_1(State__get_UnitValue(state), point.WindSpeed)), new WeatherValue_Definition(\"Gust wind\", \"Gust wind\", new WeatherValue_Unit(0, []), faTornado, new WeatherValue_TrendType(0, []), new Color(6, []), (state_1, point_1) => map_1(State__get_UnitValue(state_1), point_1.GustWindSpeed)), new WeatherValue_Definition(\"Max gust wind\", \"Max gust wind\", new WeatherValue_Unit(0, []), faTornado, new WeatherValue_TrendType(0, []), new Color(6, []), (state_2, point_2) => map_1(State__get_UnitValue(state_2), point_2.MaxGustWindSpeed)), new WeatherValue_Definition(\"Wind direction\", \"Direction\", new WeatherValue_Unit(1, []), faLongArrowAltUp, new WeatherValue_TrendType(0, []), new Color(8, []), (_arg, point_3) => map_1((value) => value, point_3.WindDirection)), new WeatherValue_Definition(\"Average\", \"Average wind\", new WeatherValue_Unit(0, []), faWind, new WeatherValue_TrendType(1, []), new Color(7, []), (state_3, point_4) => map_1(State__get_UnitValue(state_3), point_4.WindSpeedAverage)), new WeatherValue_Definition(\"Wave height\", \"Wave height\", new WeatherValue_Unit(2, []), faWater, new WeatherValue_TrendType(0, []), new Color(11, []), (_arg_1, point_5) => map_1((value_1) => value_1, point_5.WaveHeight)), new WeatherValue_Definition(\"Tide height\", \"Tide height\", new WeatherValue_Unit(2, []), faMoon, new WeatherValue_TrendType(0, []), new Color(9, []), (_arg_2, point_6) => map_1((value_2) => value_2, point_6.TideHeight)), new WeatherValue_Definition(\"Tidal flow speed\", \"Tidal flow speed\", new WeatherValue_Unit(0, []), faMoon, new WeatherValue_TrendType(0, []), new Color(10, []), (state_4, point_7) => map_1(State__get_UnitValue(state_4), point_7.TidalFlowSpeed))]);\n\nexport function Graph_Recharts_area_yAxisId(x) {\n return [\"yAxisId\", x];\n}\n\nexport function Graph_Recharts_xAxis_minTickGap(x) {\n return [\"minTickGap\", x];\n}\n\nexport function Graph_Recharts_xAxis_tickStyle(p) {\n return [\"tick\", createObj(p)];\n}\n\nexport function Graph_Recharts_yAxis_tickStyle(p) {\n return [\"tick\", createObj(p)];\n}\n\nexport function Graph_Recharts_yAxis_tickFormatter(f) {\n return [\"tickFormatter\", f];\n}\n\nexport const Graph_Recharts_composedChart_cursor_pointer = [\"cursor\", \"pointer\"];\n\nexport function Graph_trendChart(ctx, smallAspect, state) {\n let valuesNotEmpty, axisTypes, properties_10, elements, value_65;\n const theme = ThemeModule_colorMapping(state.Theme);\n const isSmall = smallAspect != null;\n const unitText = State__get_UnitText(state);\n const data = reverse(state.WeatherHistory);\n const fontSize = (isSmall ? 1 : 2) | 0;\n const fontColor = theme(isSmall ? (new Color(3, [])) : (new Color(0, [])));\n const styleAttributes = ofArray([[\"fontWeight\", \"bold\"], [\"fontSize\", fontSize + \"vmin\"]]);\n let x_4;\n const properties_11 = ofArray([[\"children\", (valuesNotEmpty = filter((d) => !isEmpty_1(choose((x) => d.GetValue(state, x), data)), WeatherValue_values), (axisTypes = List_distinct(map((d_1) => d_1.Unit, valuesNotEmpty), {\n Equals: equals,\n GetHashCode: safeHash,\n }), (properties_10 = ofArray([Graph_Recharts_composedChart_cursor_pointer, [\"width\", 100], [\"height\", 100], [\"data\", toArray(data)], [\"margin\", {\n top: defaultArg(5, 0),\n right: defaultArg(undefined, 0),\n left: defaultArg(undefined, 0),\n bottom: defaultArg(undefined, 0),\n }], (elements = toList(delay(() => {\n let properties;\n return append(singleton_1((properties = singleton([\"strokeDasharray\", join(\" \", map_2(int32ToString, new Int32Array([3, 3])))]), reactApi_1.createElement(CartesianGrid, createObj(properties)))), delay(() => {\n let properties_1;\n return append(singleton_1((properties_1 = ofArray([[\"dataKey\", (w) => timeInContext(ctx, (_arg) => toString(_arg, \"HH:mm\"), w.DateTime)], Graph_Recharts_xAxis_minTickGap(10), [\"tickMargin\", isSmall ? 10 : 25], [\"height\", isSmall ? 35 : 70], [\"angle\", -70], Graph_Recharts_xAxis_tickStyle(singleton([\"fill\", fontColor]))]), reactApi_1.createElement(XAxis, createObj(properties_1)))), delay(() => append(map((_arg_1) => {\n switch (_arg_1.tag) {\n case 1: {\n const properties_3 = ofArray([[\"yAxisId\", toString_1(_arg_1)], [\"orientation\", \"left\"], Graph_Recharts_yAxis_tickFormatter((x_2) => {\n const arg = ~~x_2 | 0;\n return toText(printf(\"%i°\"))(arg);\n }), Graph_Recharts_yAxis_tickStyle(singleton([\"fill\", fontColor]))]);\n return reactApi_1.createElement(YAxis, createObj(properties_3));\n }\n case 2: {\n const properties_4 = ofArray([[\"yAxisId\", toString_1(_arg_1)], [\"orientation\", \"right\"], [\"label\", {\n value: \"m\",\n angle: -90,\n offset: 0,\n position: [\"position\", \"inside\"],\n fill: theme(isSmall ? (new Color(3, [])) : (new Color(0, []))),\n dx: isSmall ? 0 : 10,\n }], Graph_Recharts_yAxis_tickStyle(singleton([\"fill\", fontColor]))]);\n return reactApi_1.createElement(YAxis, createObj(properties_4));\n }\n default: {\n const properties_2 = ofArray([[\"yAxisId\", toString_1(_arg_1)], [\"orientation\", \"right\"], [\"label\", {\n value: unitText,\n angle: -90,\n offset: 0,\n position: [\"position\", \"inside\"],\n fill: theme(isSmall ? (new Color(3, [])) : (new Color(0, []))),\n }], Graph_Recharts_yAxis_tickStyle(singleton([\"fill\", fontColor]))]);\n return reactApi_1.createElement(YAxis, createObj(properties_2));\n }\n }\n }, axisTypes), delay(() => {\n let properties_6;\n return append(!isSmall ? singleton_1((properties_6 = singleton([\"itemStyle\", {\n height: 20,\n }]), reactApi_1.createElement(Tooltip, createObj(properties_6)))) : empty_1(), delay(() => append(singleton_1(reactApi_1.createElement(Legend, {\n iconType: \"square\",\n formatter: (delegateArg, delegateArg_1, delegateArg_2) => ViewHelpers_mkTextWith(ViewHelpers_spanWith, fontColor, fontSize + \"vmin\", [], delegateArg),\n })), delay(() => map((d_2) => {\n if (d_2.ChartType.tag === 1) {\n const properties_9 = ofArray([[\"name\", d_2.ChartName], [\"type\", \"monotone\"], [\"dataKey\", curry2(d_2.GetValue)(state)], [\"stroke\", theme(d_2.ChartColor)], [\"fill\", theme(d_2.ChartColor)], Graph_Recharts_area_yAxisId(toString_1(d_2.Unit))]);\n return reactApi_1.createElement(Area, createObj(properties_9));\n }\n else {\n const properties_8 = ofArray([[\"name\", d_2.ChartName], [\"type\", \"monotone\"], [\"dataKey\", curry2(d_2.GetValue)(state)], [\"stroke\", theme(d_2.ChartColor)], [\"strokeWidth\", isSmall ? 1 : 3], [\"dot\", !isSmall], [\"yAxisId\", toString_1(d_2.Unit)]]);\n return reactApi_1.createElement(Line, createObj(properties_8));\n }\n }, valuesNotEmpty)))));\n }))));\n }));\n })), [\"children\", reactApi.Children.toArray(Array.from(elements))])]), reactApi_1.createElement(ComposedChart, createObj(properties_10)))))], (value_65 = (98 + \"%\"), (equals(value_65, 100 + \"%\") ? true : equals(value_65, 100 + \"%\")) ? [\"width\", 99 + \"%\"] : [\"width\", value_65]), [\"aspect\", defaultArg(smallAspect, 2)]]);\n x_4 = reactApi_1.createElement(ResponsiveContainer, createObj(properties_11));\n return createElement(\"div\", {\n style: createObj(styleAttributes),\n children: reactApi.Children.toArray([x_4]),\n });\n}\n\nexport function svg_transform_rotateCenter(deg, centerX, centerY) {\n return [\"transform\", (((((\"rotate(\" + deg) + \", \") + centerX) + \", \") + centerY) + \")\"];\n}\n\nexport function svg_width(value) {\n return [\"width\", value];\n}\n\nexport function svg_height(value) {\n return [\"height\", value];\n}\n\nexport function PortWindDashboardView() {\n let patternInput;\n let initial;\n const Width = window.innerWidth;\n initial = {\n Height: window.innerHeight,\n Width: Width,\n };\n patternInput = reactApi.useState(initial);\n const viewPort = patternInput[0];\n const action_1 = (_arg) => {\n debounce()(200)(() => {\n let Width_1;\n patternInput[1]((Width_1 = window.innerWidth, {\n Height: window.innerHeight,\n Width: Width_1,\n }));\n })();\n };\n const options_1 = undefined;\n let addOptions;\n const dependencies_1 = [options_1];\n addOptions = reactApi.useMemo(() => Impl_adjustPassive(options_1), dependencies_1);\n let removeOptions;\n const dependencies_1_1 = [options_1];\n removeOptions = reactApi.useMemo(() => Impl_createRemoveOptions(options_1), dependencies_1_1);\n let fn;\n const dependencies_1_2 = [action_1];\n fn = reactApi.useMemo(() => ((arg) => {\n action_1(arg);\n }), dependencies_1_2);\n useEffect(useCallbackRef(() => {\n if (addOptions == null) {\n window.addEventListener(\"resize\", fn);\n }\n else {\n const options_1_1 = addOptions;\n window.addEventListener(\"resize\", fn, options_1_1);\n }\n return createDisposable(() => {\n if (removeOptions == null) {\n window.removeEventListener(\"resize\", fn);\n }\n else {\n const options_2 = removeOptions;\n window.removeEventListener(\"resize\", fn, options_2);\n }\n });\n }));\n const ctx = reactApi.useContext(timeZoneContext);\n const patternInput_1 = React_useElmish_Z6C327F2E(() => ProgramModule_mkProgram(init, update, (_arg_1, _arg_1_1) => {\n }), undefined, []);\n const state_1 = patternInput_1[0];\n const dispatch = patternInput_1[1];\n const theme = ThemeModule_colorMapping(state_1.Theme);\n const weather = state_1.Weather;\n const sensor = bind((sId) => tryFind((x) => equals(x.SensorId, sId), state_1.Sensors), state_1.SelectedSensor);\n let patternInput_2;\n const baseWidth = viewPort.Width - 250;\n const baseWidthPercent = (baseWidth / viewPort.Width) * 100;\n const columns = max(1, min(3, ~~(baseWidth / 333))) | 0;\n patternInput_2 = [columns, (baseWidthPercent / columns) - (columns * 1)];\n const columns_1 = patternInput_2[0] | 0;\n const columnWidth_1 = patternInput_2[1];\n return ViewHelpers_divWith([[\"className\", `theme-${toString_1(state_1.Theme).toLocaleLowerCase()}`], [\"style\", {\n backgroundColor: theme(new Color(1, [])),\n color: theme(new Color(0, [])),\n height: 100 + \"%\",\n }]], toList(delay(() => {\n let color_3;\n return append(singleton_1(ViewHelpers_leftRightColumns(false, 100 + \"%\", singleton(ViewHelpers_divWith([[\"style\", {\n color: theme(new Color(0, [])),\n }]], singleton(PageTitle_titleWith((color_3 = theme(new Color(0, [])), (s) => ViewHelpers_mkText(color_3, 4, [], s)), \"PortWind Dashboard\", \"\")))), empty())), delay(() => append(singleton_1(ViewHelpers_mkText(theme(new Color(0, [])), 2, [], \"Choose port to see wind statistics\")), delay(() => append(ViewHelpers_spaceN(1), delay(() => {\n let w_3, weather_1, lastUpdated_2;\n const header = (lastUpdated_1) => {\n let p_1_2;\n return ViewHelpers_leftRightColumns(columns_1 <= 1, ((columns_1 * columnWidth_1) + (((columns_1 - 1) * 2) * 1)) + \"vw\", singleton(ViewHelpers_mkRow(toList(delay(() => {\n let elems;\n return append(singleton_1(createElement(\"select\", createObj(ofArray([[\"style\", {\n fontSize: 2 + \"vmin\",\n color: theme(new Color(3, [])),\n backgroundColor: theme(new Color(4, [])),\n borderRadius: 0.5 + \"vmin\",\n borderWidth: 0,\n borderRight: ((((1 + \"vmin\") + \" \") + \"solid\") + \" \") + theme(new Color(4, [])),\n marginRight: 0.5 + \"vmin\",\n padding: 0.5 + \"vmin\",\n }], [\"onChange\", (ev_1) => {\n dispatch(new Msg(2, [new SensorId(ev_1.target.value)]));\n }], (elems = map((s_1) => createElement(\"option\", createObj(toList(delay(() => append(singleton_1([\"children\", s_1.Name]), delay(() => append(singleton_1([\"value\", SensorId__get_Value(s_1.SensorId)]), delay(() => (equals(state_1.SelectedSensor, s_1.SensorId) ? singleton_1([\"selected\", true]) : empty_1()))))))))), state_1.Sensors), [\"children\", reactApi.Children.toArray(Array.from(elems))])])))), delay(() => append(ViewHelpers_spaceN(2), delay(() => {\n let t;\n return append(singleton_1(IconModule_View(ofList(map((value_49) => value_49, ofArray([(t = faMapMarkedAlt, [\"icon\", t]), [\"color\", theme(new Color(2, []))], [\"size\", 5 + \"vmin\"]])), {\n Compare: comparePrimitives,\n }))), delay(() => append(ViewHelpers_spaceN(2), delay(() => append(singleton_1(ViewHelpers_spanWith([[\"onClick\", (_arg_2) => {\n dispatch(new Msg(6, []));\n }], [\"style\", {\n cursor: \"pointer\",\n }]], singleton(IconModule_View(ofList(map((value_54) => value_54, toList(delay(() => append(singleton_1([\"icon\", (state_1.MainView.tag === 1) ? faTh : faChartLine]), delay(() => append(singleton_1([\"color\", theme(new Color(4, []))]), delay(() => singleton_1([\"size\", 5 + \"vmin\"])))))))), {\n Compare: comparePrimitives,\n }))))), delay(() => append(ViewHelpers_spaceN(2), delay(() => {\n let p_1_5, p_1_1, p_1_6;\n return singleton_1(ViewHelpers_mkColumnWith([[\"justifyContent\", \"center\"]], singleton(ViewHelpers_mkRow(ofArray([ViewHelpers_mkColumnWith([[\"justifyContent\", \"center\"]], singleton(ViewHelpers_mkText(theme(new Color(0, [])), 2, [], \"knots\"))), (p_1_5 = ofList(map((value_55) => value_55, empty()), {\n Compare: comparePrimitives,\n }), createElement(SpaceModule_View, {\n p: p_1_5,\n })), ViewHelpers_divWith([[\"style\", {\n \"--swui-field-bg-enabled\": theme(new Color(4, [])),\n \"--swui-primary-action-color\": theme(new Color(4, [])),\n \"--swui-handle-bg-enabled-color\": theme(new Color(3, [])),\n \"--swui-field-border-color\": theme(new Color(1, [])),\n }]], singleton((p_1_1 = ofList(map((value_10) => value_10, ofArray([[\"value\", state_1.UnitsMetersPerSeconds], [\"onValueChange\", (arg_1) => {\n dispatch(new Msg(5, [arg_1]));\n }]])), {\n Compare: comparePrimitives,\n }), createElement(SwitchModule_View, {\n p: p_1_1,\n })))), (p_1_6 = ofList(map((value_56) => value_56, empty()), {\n Compare: comparePrimitives,\n }), createElement(SpaceModule_View, {\n p: p_1_6,\n })), ViewHelpers_mkColumnWith([[\"justifyContent\", \"center\"]], singleton(ViewHelpers_mkText(theme(new Color(0, [])), 2, [], \"m/s\")))])))));\n }))))))));\n }))));\n })))), singleton(ViewHelpers_mkRow(ofArray([ViewHelpers_mkText(theme(new Color(0, [])), 2, [], \"Last updated: \"), (p_1_2 = ofList(map((value_22) => value_22, empty()), {\n Compare: comparePrimitives,\n }), createElement(SpaceModule_View, {\n p: p_1_2,\n })), ViewHelpers_mkText(theme(new Color(0, [])), 2, [], DateTimeOffset_dateTimeStr(DateTimeOffset_dateTimeWithTimezone(lastUpdated_1)))]))));\n };\n const dashboardView = (w) => {\n const x_33 = map((arg_4) => ViewHelpers_mkRow(map((x_7) => {\n let innerContent;\n const iconMargin = singleton([\"marginRight\", 3 + \"vw\"]);\n const mkContentWeatherValue = (d_1, iconProps) => {\n const matchValue_1 = d_1.GetValue(state_1, w);\n if (matchValue_1 != null) {\n const value_60 = matchValue_1;\n let patternInput_3;\n const matchValue_2 = d_1.Unit;\n patternInput_3 = ((matchValue_2.tag === 2) ? [round_1, \"m\"] : ((matchValue_2.tag === 1) ? [(x_10) => (`${round_1(x_10)}°`), \"\"] : [round_1, State__get_UnitText(state_1)]));\n return ViewHelpers_mkRow(ofArray([ViewHelpers_mkColumn(singleton(ViewHelpers_divWith(iconProps(value_60), singleton(IconModule_View(ofList(map((value_62) => value_62, ofArray([[\"icon\", d_1.Icon], [\"color\", theme(new Color(3, []))], [\"size\", 12 + \"vmin\"]])), {\n Compare: comparePrimitives,\n })))))), ViewHelpers_mkColumnWith([[\"justifyContent\", \"center\"]], singleton(ViewHelpers_spanWith([], ofArray([ViewHelpers_mkTextSizeUnit(theme(new Color(3, [])), 6 + \"vmax\", [[\"fontWeight\", \"bold\"]], patternInput_3[0](value_60)), ViewHelpers_mkText(theme(new Color(3, [])), 3, [[\"marginLeft\", 0.4 + \"vw\"]], \" \" + patternInput_3[1])]))))]));\n }\n else {\n return ViewHelpers_mkRow(empty());\n }\n };\n const mkContent = (props_10, label_1, rowItem) => {\n const x_12 = ViewHelpers_mkColumnWith([[\"alignItems\", \"center\"], [\"width\", \"100%\"], [\"height\", \"100%\"]], toList(delay(() => append(ViewHelpers_spaceN(2), delay(() => append(singleton_1(ViewHelpers_mkRow(singleton(ViewHelpers_mkText(theme(new Color(3, [])), 4, [], label_1)))), delay(() => append(singleton_1(ViewHelpers_mkRowWith([[\"height\", \"100%\"]], singleton(ViewHelpers_mkColumnWith([[\"height\", \"100%\"], [\"alignItems\", \"center\"], [\"justifyContent\", \"center\"]], singleton(rowItem))))), delay(() => ViewHelpers_spaceN(2))))))))));\n if (equals(props_10, empty())) {\n return x_12;\n }\n else {\n return ViewHelpers_spanWith(props_10, singleton(x_12));\n }\n };\n innerContent = ((_arg_3) => {\n let elements_16, elements_15;\n switch (_arg_3.tag) {\n case 1: {\n const v_1 = _arg_3.fields[0];\n return mkContent(empty(), v_1.Label, mkContentWeatherValue(v_1, (value_69) => singleton([\"style\", createObj(toList(delay(() => append(iconMargin, delay(() => singleton_1([\"transform\", (\"rotate(\" + ~~rotateDirection180(value_69)) + \"deg)\"]))))))])));\n }\n case 3:\n return mkContent(empty(), _arg_3.fields[0].Label, ViewHelpers_mkRow(singleton(ViewHelpers_mkColumn(toList(delay(() => singleton_1(defaultArg(map_1((l) => ViewHelpers_divWith([[\"style\", {\n width: (columnWidth_1 * 0.75) + \"vw\",\n height: (30 - 13) + \"vh\",\n }]], toList(delay(() => {\n let key_46, xs_3, p_1_10, props_11, p_1_9, props_12, arg_2, arg_1_1, arg_2_1, arg_3;\n const url = map_marker;\n return singleton_1((key_46 = toString_1(sensor), (xs_3 = [(p_1_10 = ofList(map((value_86) => value_86, ofArray([[\"center\", l], [\"zoom\", 14], [\"children\", ofArray([(props_11 = {\n attribution: \"© OpenStreetMap contributors\",\n url: \"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\n }, react.createElement(TileLayer, props_11)), (p_1_9 = ofList(map((value_85) => value_85, ofArray([[\"position\", l], [\"icon\", (props_12 = ofArray([[\"iconUrl\", url], [\"iconSize\", [24, 24]], [\"iconAnchor\", [12, 12]]]), (arg_2 = toString_1(map_1((x_14) => x_14, FSharpMap__TryFind(ofList(map((value_80) => value_80, props_12), {\n Compare: comparePrimitives,\n }), \"iconUrl\"))), (arg_1_1 = map_1((x_16) => x_16, FSharpMap__TryFind(ofList(map((value_82) => value_82, props_12), {\n Compare: comparePrimitives,\n }), \"iconSize\")), (arg_2_1 = map_1((x_18) => x_18, FSharpMap__TryFind(ofList(map((value_83) => value_83, props_12), {\n Compare: comparePrimitives,\n }), \"iconAnchor\")), (arg_3 = map_1((x_20) => x_20, FSharpMap__TryFind(ofList(map((value_84) => value_84, props_12), {\n Compare: comparePrimitives,\n }), \"popupAnchor\")), new Icon({iconUrl: arg_2, iconSize: arg_1_1, iconAnchor: arg_2_1, popupAnchor: arg_3}))))))]])), {\n Compare: comparePrimitives,\n }), createElement(Marker_View, {\n p: p_1_9,\n }))])]])), {\n Compare: comparePrimitives,\n }), createElement(MapContainer_View, {\n p: p_1_10,\n }))], react.createElement(react.Fragment, {\n key: key_46,\n }, ...xs_3))));\n }))), orElse(bind((w_1) => w_1.Location, weather), bind((s_3) => s_3.Location, sensor))), defaultOf()))))))));\n case 2: {\n const v_3 = _arg_3.fields[0];\n const aspect = (columnWidth_1 * viewPort.Width) / ((30 - 12) * viewPort.Height);\n return mkContent(ofArray([[\"onClick\", (_arg_5) => {\n v_3.OnClick();\n }], [\"style\", {\n cursor: \"pointer\",\n }]]), v_3.Label, ViewHelpers_mkRow(singleton(ViewHelpers_divWith([[\"style\", {\n width: columnWidth_1 + \"vw\",\n }]], singleton(Graph_trendChart(ctx, aspect, state_1))))));\n }\n case 4: {\n const v_4 = _arg_3.fields[0];\n const mergeTransforms = (xs_4) => [\"transform\", join(\" \", reverse(map((x_25) => x_25[1], xs_4)))];\n const ship_at_quay = ship_at_quay_2(theme(new Color(3, [])), v_4.Flip);\n return mkContent(empty(), v_4.Label, ViewHelpers_mkRow(singleton(ViewHelpers_divWith([[\"style\", {\n display: \"block\",\n margin: \"auto\",\n }]], singleton(createElement(\"svg\", createObj(ofArray([[\"viewBox\", (((((0 + \" \") + 0) + \" \") + ~~ship_at_quay.Width) + \" \") + ~~ship_at_quay.Height], svg_width(columnWidth_1 + \"vw\"), svg_height(30 + \"vh\"), (elements_16 = singleton(createElement(\"g\", createObj(ofArray([mergeTransforms(v_4.WholeSvgTransform), (elements_15 = ofArray([createElement(\"g\", createObj(ofArray([mergeTransforms(v_4.SvgTransform), [\"children\", reactApi.Children.toArray([v_4.Svg])]]))), createElement(\"g\", {\n children: reactApi.Children.toArray([v_4.SvgArrow]),\n })]), [\"children\", reactApi.Children.toArray(Array.from(elements_15))])])))), [\"children\", reactApi.Children.toArray(Array.from(elements_16))])]))))))));\n }\n default: {\n const v = _arg_3.fields[0];\n return mkContent(empty(), v.Label, mkContentWeatherValue(v, (_arg_4) => singleton([\"style\", createObj(toList(delay(() => iconMargin)))])));\n }\n }\n });\n return ViewHelpers_divWith([[\"style\", {\n backgroundColor: theme(new Color(4, [])),\n borderRadius: 1 + \"vmin\",\n marginRight: (1 * 2) + \"vmax\",\n marginBottom: (1 * 2) + \"vmax\",\n }]], singleton(ViewHelpers_mkColumnWith([[\"width\", columnWidth_1 + \"vw\"]], singleton(ViewHelpers_mkRowWith([[\"height\", 30 + \"vh\"]], singleton(innerContent(x_7)))))));\n }, arg_4)), chunkBySize(columns_1, toList(delay(() => append(choose_1((d_2) => map_1((_arg_6) => {\n if (equals(d_2.Unit, new WeatherValue_Unit(1, []))) {\n return new WeatherValue_WeatherBox(1, [d_2]);\n }\n else {\n return new WeatherValue_WeatherBox(0, [d_2]);\n }\n }, d_2.GetValue(state_1, w)), WeatherValue_values), delay(() => append(ofArray(toArray_1(map2((d_3, quayDir) => {\n let value_123;\n const flipVessel = defaultArg(map_1((_arg_8) => _arg_8.QuayFlipVessel, sensor), false);\n const ship_at_quay_1 = ship_at_quay_2(theme(new Color(3, [])), flipVessel);\n const arrow = directionArrow(theme(new Color(3, [])), theme(new Color(4, [])));\n const h = ship_at_quay_1.Height;\n const w_2 = ship_at_quay_1.Width;\n const r = max(w_2, h);\n const windRot = d_3;\n let rot;\n const x_27 = (quayDir - windRot) % 360;\n rot = ((x_27 < 0) ? (360 + x_27) : x_27);\n const moveY = op_UnaryNegation_Int32(~~(arrow.Height * ((value_123 = (((windRot / 2) * 3.141592653589793) / 180), Math.sin(value_123))))) | 0;\n return new WeatherValue_WeatherBox(4, [{\n Flip: flipVessel,\n Label: \"Quay\",\n Svg: ship_at_quay_1.Svg,\n SvgArrow: arrow.Svg,\n SvgTransform: singleton(svg_transform_rotateCenter(rot, r / 2, r / 2)),\n WholeSvgTransform: ofArray([svg_transform_rotateCenter(windRot, w_2 / 2, h / 2), [\"transform\", (((\"translate(\" + 0) + \",\") + moveY) + \")\"], [\"transform\", (\"scale(\" + 0.9) + \")\"]]),\n }]);\n }, tryHead_1(choose((_arg_7) => _arg_7.WindDirection, state_1.WeatherHistory)), bind((s_4) => s_4.QuayOrientation, sensor)))), delay(() => append(!isEmpty_1(state_1.WeatherHistory) ? singleton_1(new WeatherValue_WeatherBox(2, [{\n Label: \"Trend\",\n OnClick: () => {\n dispatch(new Msg(6, []));\n },\n }])) : empty_1(), delay(() => singleton_1(new WeatherValue_WeatherBox(3, [{\n Label: \"Position\",\n }]))))))))))));\n return ViewHelpers_divWith([[\"style\", {\n marginTop: 1 + \"vmax\",\n }]], x_33);\n };\n const matchValue_3 = weather;\n return (matchValue_3 != null) ? ((matchValue_3.Weather != null) ? ((w_3 = matchValue_3.Weather, (weather_1 = matchValue_3, append(singleton_1(header(weather_1.LastUpdated)), delay(() => {\n let children_3;\n return (state_1.MainView.tag === 1) ? singleton_1((children_3 = toList(delay(() => append(ViewHelpers_spaceN(2), delay(() => singleton_1(Graph_trendChart(ctx, undefined, state_1)))))), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_3)),\n }))) : singleton_1(dashboardView(w_3));\n }))))) : ((lastUpdated_2 = matchValue_3.LastUpdated, append(singleton_1(header(lastUpdated_2)), delay(() => append(singleton_1(ViewHelpers_mkText(theme(new Color(0, [])), 10, [], \"No data available!\")), delay(() => {\n let children_1;\n return (state_1.MainView.tag === 1) ? singleton_1((children_1 = toList(delay(() => append(ViewHelpers_spaceN(2), delay(() => singleton_1(Graph_trendChart(ctx, undefined, state_1)))))), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_1)),\n }))) : singleton_1(dashboardView(PortWindWeather_Default_Z53C0511E(lastUpdated_2)));\n }))))))) : singleton_1(createElement(\"h3\", {\n children: [\"Loading...\"],\n }));\n }))))));\n })));\n}\n\n","import { Dictionary } from \"./fable_modules/fable-library-js.4.19.3/MutableMap.js\";\nimport { HashIdentity_Structural } from \"./fable_modules/fable-library-js.4.19.3/FSharp.Collections.js\";\nimport { FSharpRef, toString } from \"./fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { tryGetValue } from \"./fable_modules/fable-library-js.4.19.3/MapUtil.js\";\n\nexport function debounce() {\n let memoizations = new Dictionary([], HashIdentity_Structural());\n return (timeout) => ((fn) => ((value) => {\n const key = toString(fn);\n let matchValue;\n let outArg = 0;\n matchValue = [tryGetValue(memoizations, key, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n if (matchValue[0]) {\n clearTimeout(matchValue[1]);\n }\n const timeoutId_1 = setTimeout(() => {\n memoizations.delete(key);\n fn(value);\n }, timeout) | 0;\n memoizations.set(key, timeoutId_1);\n }));\n}\n\n","import { compare, physicalHash, equals, structuralHash } from \"./Util.js\";\nexport function HashIdentity_FromFunctions(hash, eq) {\n return {\n Equals(x, y) {\n return eq(x, y);\n },\n GetHashCode(x_1) {\n return hash(x_1);\n },\n };\n}\nexport function HashIdentity_Structural() {\n return HashIdentity_FromFunctions(structuralHash, equals);\n}\nexport function HashIdentity_Reference() {\n return HashIdentity_FromFunctions(physicalHash, (e, e_1) => (e === e_1));\n}\nexport function ComparisonIdentity_FromFunction(comparer) {\n return {\n Compare(x, y) {\n return comparer(x, y);\n },\n };\n}\nexport function ComparisonIdentity_Structural() {\n return ComparisonIdentity_FromFunction(compare);\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"cell\":\"x46kKLbEyGDmmUXUmdUi\",\"upperPart\":\"Op5MqSN7Ubbm0ZJlp_g9\",\"boxes\":\"rMaSfimbgJRCpz5EAXyk\",\"box\":\"uqRky8Q8ABt3Y1L_tjBk\",\"table\":\"oNyUo9jp7GppBAjlcrTc\",\"heading-wrapper\":\"xOE2DIF71CPWoIGgFZF6\",\"popup-header\":\"YqqpH1cSFweejlSFXSXo\",\"heading-icon\":\"lXxrFJZAcs9l5izdsMLk\",\"map\":\"rY9lLaC1C5AFXYdvS2rg\",\"wind-switch\":\"vktquHcEnDqm5n2SXHTu\",\"label-switch-div\":\"ncYagEX1bfrqOJL4pcEQ\"};","import { toString, Union, Record } from \"../fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { PortWindWeatherResult_$reflection, SensorId_$reflection, SensorMetaData_$reflection, PortWindWeather_$reflection } from \"../StenaWeather.Domain/PortWind.js\";\nimport { union_type, record_type, class_type, option_type, list_type } from \"../fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { Point_$reflection } from \"../StenaWeather.Domain/Forecast.js\";\nimport { length, toArray as toArray_2, collect, sortByDescending, head, isEmpty, singleton, ofArray, map, empty } from \"../fable_modules/fable-library-js.4.19.3/List.js\";\nimport { ServerError_$reflection } from \"../StenaWeather.WeatherServiceUI.Shared/Errors.js\";\nimport { FSharpResult$2 } from \"../fable_modules/fable-library-js.4.19.3/Result.js\";\nimport PortWind$002Emodule from \"../../src/StenaWeather.WeatherServiceUI.Client/Pages/PortWind.module.scss\";\nimport { interpolate, toText, format, join } from \"../fable_modules/fable-library-js.4.19.3/String.js\";\nimport { FSharpMap__get_Item, ofSeq, ofList } from \"../fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport { compareArrays, comparePrimitives, createObj } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { DivsForStandardTable_dateTimeDiv, DivsForStandardTable_defaultDiv, rotateDirection180 } from \"./Common.js\";\nimport { IconModule_View } from \"../Components/StenaWebUI/Icons/Icon.js\";\nimport { faLongArrowAltUp } from \"@fortawesome/free-solid-svg-icons\";\nimport { reactApi } from \"../fable_modules/Feliz.2.8.0/Interop.fs.js\";\nimport { SpaceModule_View } from \"../Components/StenaWebUI/Core/Space.js\";\nimport { RowModule_View } from \"../Components/StenaWebUI/Core/Row.js\";\nimport { IndentModule_View } from \"../Components/StenaWebUI/Core/Indent.js\";\nimport { ErrorView_Cmd_error, ErrorView_Cmd_ofError } from \"../SharedView.js\";\nimport { onPortWindAPI, Cmd_OfAsync_eitherAsResult } from \"../Server.js\";\nimport { fromHours } from \"../fable_modules/fable-library-js.4.19.3/TimeSpan.js\";\nimport { compare } from \"../fable_modules/fable-library-js.4.19.3/Date.js\";\nimport { Cmd_none } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { React_useElmish_Z6C327F2E } from \"../fable_modules/Feliz.UseElmish.2.5.0/UseElmish.fs.js\";\nimport { ProgramModule_mkProgram } from \"../fable_modules/Fable.Elmish.4.2.0/program.fs.js\";\nimport { toArray, map as map_1, defaultArg } from \"../fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { defaultOf } from \"../fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { TextModule_View } from \"../Components/StenaWebUI/Core/Text.js\";\nimport { TextVariant } from \"../Components/StenaWebUI/Core/Text.js\";\nimport { map as map_2, collect as collect_1, toArray as toArray_1, iterate, singleton as singleton_1, append, delay, toList } from \"../fable_modules/fable-library-js.4.19.3/Seq.js\";\nimport { ColumnModule_View } from \"../Components/StenaWebUI/Core/Column.js\";\nimport { ButtonBase_ViewSecondary } from \"../Components/StenaWebUI/Elements/Button.js\";\nimport { StandardTableModule_view } from \"../Components/StenaWebUI/Grid/StandardTable.js\";\n\nexport class PortWindData extends Record {\n constructor(Weather, Location, LastUpdated) {\n super();\n this.Weather = Weather;\n this.Location = Location;\n this.LastUpdated = LastUpdated;\n }\n}\n\nexport function PortWindData_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWind.PortWindData\", [], PortWindData, () => [[\"Weather\", list_type(PortWindWeather_$reflection())], [\"Location\", option_type(Point_$reflection())], [\"LastUpdated\", class_type(\"System.DateTimeOffset\")]]);\n}\n\nexport class State extends Record {\n constructor(Sensors, SelectedSensor, Weather) {\n super();\n this.Sensors = Sensors;\n this.SelectedSensor = SelectedSensor;\n this.Weather = Weather;\n }\n}\n\nexport function State_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWind.State\", [], State, () => [[\"Sensors\", list_type(SensorMetaData_$reflection())], [\"SelectedSensor\", option_type(SensorId_$reflection())], [\"Weather\", option_type(PortWindData_$reflection())]]);\n}\n\nexport function State_get_Empty() {\n return new State(empty(), undefined, undefined);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"GetSensors\", \"SensorsLoaded\", \"GetWeather\", \"WeatherLoaded\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.Pages.PortWind.Msg\", [], Msg, () => [[], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [list_type(SensorMetaData_$reflection()), ServerError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", list_type(SensorMetaData_$reflection())]], [[\"ErrorValue\", ServerError_$reflection()]]])]], [[\"Item\", SensorId_$reflection()]], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [PortWindWeatherResult_$reflection(), ServerError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", PortWindWeatherResult_$reflection()]], [[\"ErrorValue\", ServerError_$reflection()]]])]]]);\n}\n\nexport const cn = (() => {\n const styles = PortWind$002Emodule;\n const cnFn = (name) => (styles[name]);\n const cnFns = (names) => map((x) => (styles[x]), names);\n return {\n className: cnFn,\n classes: cnFns,\n prop: {\n className: (arg) => [\"className\", cnFn(arg)],\n classes: (arg_1) => [\"className\", join(\" \", cnFns(arg_1))],\n },\n };\n})();\n\nexport function round(x) {\n return format('{0:' + \"0\" + '}', x);\n}\n\nfunction DivsForStandardTable_directionsDiv(unit, value) {\n let p_1_4, elems, t, p_1_2, p_1_3;\n const p_1_5 = ofList(map((value_9) => value_9, singleton([\"children\", singleton((p_1_4 = ofList(map((value_8) => value_8, singleton([\"children\", ofArray([createElement(\"div\", createObj(ofArray([[\"style\", {\n transform: (\"rotate(\" + ~~rotateDirection180(value)) + \"deg)\",\n }], (elems = [IconModule_View(ofList(map((value_4) => value_4, ofArray([(t = faLongArrowAltUp, [\"icon\", t]), [\"color\", \"var(--lhds-color-ui-600)\"]])), {\n Compare: comparePrimitives,\n }))], [\"children\", reactApi.Children.toArray(Array.from(elems))])]))), (p_1_2 = ofList(map((value_6) => value_6, empty()), {\n Compare: comparePrimitives,\n }), createElement(SpaceModule_View, {\n p: p_1_2,\n })), (p_1_3 = ofList(map((value_7) => value_7, empty()), {\n Compare: comparePrimitives,\n }), createElement(SpaceModule_View, {\n p: p_1_3,\n })), DivsForStandardTable_defaultDiv(`${round(value)}${unit}`)])])), {\n Compare: comparePrimitives,\n }), createElement(RowModule_View, {\n p: p_1_4,\n })))])), {\n Compare: comparePrimitives,\n });\n return createElement(IndentModule_View, {\n p: p_1_5,\n });\n}\n\nexport function init() {\n return [State_get_Empty(), singleton((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n}\n\nexport function update(msg, state) {\n switch (msg.tag) {\n case 1:\n if (msg.fields[0].tag === 1) {\n return [state, ErrorView_Cmd_ofError(msg.fields[0].fields[0])];\n }\n else if (isEmpty(msg.fields[0].fields[0])) {\n return [state, ErrorView_Cmd_error(\"Sensor list is empty\")];\n }\n else {\n return [new State(msg.fields[0].fields[0], state.SelectedSensor, state.Weather), singleton((dispatch) => {\n dispatch(new Msg(2, [head(msg.fields[0].fields[0]).SensorId]));\n })];\n }\n case 2:\n return [new State(state.Sensors, msg.fields[0], undefined), Cmd_OfAsync_eitherAsResult(() => onPortWindAPI((x_1) => x_1.GetWeather(msg.fields[0], fromHours(3), fromHours(1))), (Item_1) => (new Msg(3, [Item_1])))];\n case 3:\n if (msg.fields[0].tag === 1) {\n return [state, ErrorView_Cmd_ofError(msg.fields[0].fields[0])];\n }\n else {\n return [new State(state.Sensors, state.SelectedSensor, new PortWindData(sortByDescending((x_4) => x_4.DateTime, sortByDescending((x_2) => x_2.DateTime, msg.fields[0].fields[0].Weather, {\n Compare: compare,\n }), {\n Compare: compare,\n }), msg.fields[0].fields[0].Location, msg.fields[0].fields[0].LastUpdated)), Cmd_none()];\n }\n default:\n return [state, Cmd_OfAsync_eitherAsResult(() => onPortWindAPI((x) => x.GetSensors()), (Item) => (new Msg(1, [Item])))];\n }\n}\n\nexport function PortWindView() {\n const patternInput = React_useElmish_Z6C327F2E(() => ProgramModule_mkProgram(init, update, (_arg, _arg_1) => {\n }), undefined, []);\n const state_1 = patternInput[0];\n const columns = ofArray([[\"Date\", (w) => DivsForStandardTable_dateTimeDiv(w.DateTime)], [\"Actual\", (w_1) => defaultArg(map_1((x) => DivsForStandardTable_defaultDiv(`${round(x)} m/s`), w_1.WindSpeed), defaultOf())], [\"Direction\", (w_2) => defaultArg(map_1((arg) => DivsForStandardTable_directionsDiv(\"°\", arg), w_2.WindDirection), defaultOf())], [\"Average\", (w_3) => defaultArg(map_1((x_1) => DivsForStandardTable_defaultDiv(`${round(x_1)} m/s`), w_3.WindSpeedAverage), createElement(\"div\", {}))], [\"Gust wind\", (w_4) => defaultArg(map_1((x_2) => DivsForStandardTable_defaultDiv(`${round(x_2)} m/s`), w_4.GustWindSpeed), defaultOf())]]);\n const mkText = (s) => TextModule_View(ofList(map((value_10) => value_10, singleton([\"children\", s])), {\n Compare: comparePrimitives,\n }));\n const mkBoldText = (s_1) => TextModule_View(ofList(map((value_12) => value_12, ofArray([[\"variant\", new TextVariant(3, [])], [\"children\", s_1]])), {\n Compare: comparePrimitives,\n }));\n const children_4 = toList(delay(() => {\n let p_1_6, p_1_3, p_1_5;\n return append(singleton_1((p_1_6 = ofList(map((value_17) => value_17, ofArray([[\"justifyContent\", \"space-between\"], [\"children\", ofArray([(p_1_3 = ofList(map((value_14) => value_14, ofArray([[\"width\", \"50%\"], [\"children\", singleton(createElement(\"h1\", {\n children: [\"PortWind\"],\n }))]])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_3,\n })), (p_1_5 = ofList(map((value_16) => value_16, ofArray([[\"justifyContent\", \"flex-end\"], [\"children\", singleton(ButtonBase_ViewSecondary(ofList(map((value_15) => value_15, ofArray([[\"label\", \"Refresh\"], [\"onClick\", (_arg_2) => {\n iterate((sId) => {\n patternInput[1](new Msg(2, [sId]));\n }, toArray(state_1.SelectedSensor));\n }]])), {\n Compare: comparePrimitives,\n })))]])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_5,\n }))])]])), {\n Compare: comparePrimitives,\n }), createElement(RowModule_View, {\n p: p_1_6,\n }))), delay(() => {\n const lastUpdatedView = (lastUpdated) => {\n let p_1_7, p_1_8;\n const p_1_9 = ofList(map((value_20) => value_20, singleton([\"children\", ofArray([(p_1_7 = ofList(map((value_18) => value_18, singleton([\"children\", singleton(DivsForStandardTable_defaultDiv(\"Last updated: \"))])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_7,\n })), (p_1_8 = ofList(map((value_19) => value_19, singleton([\"children\", singleton(DivsForStandardTable_dateTimeDiv(lastUpdated))])), {\n Compare: comparePrimitives,\n }), createElement(ColumnModule_View, {\n p: p_1_8,\n }))])])), {\n Compare: comparePrimitives,\n });\n return createElement(RowModule_View, {\n p: p_1_9,\n });\n };\n return append(singleton_1(createElement(\"h2\", {\n children: [\"Gothenburg - Majnabbe\"],\n })), delay(() => {\n let children;\n const matchValue = state_1.Weather;\n let matchResult, weather_3, weather_4;\n if (matchValue != null) {\n if (length(matchValue.Weather) === 0) {\n matchResult = 0;\n weather_3 = matchValue;\n }\n else if (length(matchValue.Weather) > 0) {\n matchResult = 1;\n weather_4 = matchValue;\n }\n else {\n matchResult = 2;\n }\n }\n else {\n matchResult = 2;\n }\n switch (matchResult) {\n case 0:\n return append(singleton_1((children = singleton(mkBoldText(\"No data available!\")), createElement(\"p\", {\n children: reactApi.Children.toArray(Array.from(children)),\n }))), delay(() => singleton_1(lastUpdatedView(weather_3.LastUpdated))));\n case 1: {\n const data = ofSeq(collect((x_12) => map((tupledArg) => [[x_12.DateTime, tupledArg[0]], tupledArg[1](x_12)], columns), weather_4.Weather), {\n Compare: compareArrays,\n });\n return append(singleton_1(lastUpdatedView(weather_4.LastUpdated)), delay(() => append(singleton_1(defaultArg(map_1((l) => {\n const children_2 = ofArray([mkBoldText(\"Lat: \"), mkText(toText(interpolate(\"%.3f%P()\", [l.Latitude]))), mkBoldText(\" Long: \"), mkText(toText(interpolate(\"%.3f%P()\", [l.Longitude])))]);\n return createElement(\"p\", {\n children: reactApi.Children.toArray(Array.from(children_2)),\n });\n }, weather_4.Location), defaultOf())), delay(() => singleton_1(createElement(\"div\", {\n className: cn.className(\"table\"),\n children: StandardTableModule_view(createObj(toList([[\"items\", toArray_1(toArray_2(weather_4.Weather))], [\"variant\", \"standard\"], [\"config\", createObj(toList([[\"keyResolver\", (w_5) => toString(w_5.DateTime)], [\"stickyHeader\", true], [\"stickyColumnGroups\", \"first\"], [\"disableSorting\", true], [\"columns\", createObj(toList(delay(() => collect_1((matchValue_1) => {\n let columnProps;\n const columnName = matchValue_1[0];\n return singleton_1((columnProps = createObj(toList([[\"name\", `${columnName}`], [\"itemValueResolver\", (value_27) => {\n }], [\"columnLabel\", `${columnName}`], [\"renderCell\", (p_18) => FSharpMap__get_Item(data, [p_18.item.DateTime, columnName])]])), [columnProps.name, columnProps]));\n }, columns))))], [\"columnOrder\", toArray_1(map_2((tuple) => tuple[0], columns))]]))]]))),\n }))))));\n }\n default:\n return singleton_1(createElement(\"h3\", {\n children: [\"Loading...\"],\n }));\n }\n }));\n }));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_4)),\n });\n}\n\n","import { printf, toText } from \"./fable_modules/fable-library-js.4.19.3/String.js\";\nimport { value as value_43, defaultArgWith, map, defaultArg, ofNullable, some } from \"./fable_modules/fable-library-js.4.19.3/Option.js\";\nimport { Convert_fromJson, Convert_serialize } from \"./fable_modules/Fable.SimpleJson.3.24.0/Json.Converter.fs.js\";\nimport { createTypeInfo } from \"./fable_modules/Fable.SimpleJson.3.24.0/TypeInfo.Converter.fs.js\";\nimport { Router_goToUrl, PageModule_toUrlSegments, PortWindSubpage, Router_navigatePage, Cmd_navigatePage, PageModule_parseFromUrlSegments, PortWindSubpageModule_all, Page, PageModule_isLoginPage, PageModule_defaultPage, Page_$reflection } from \"./Router.js\";\nimport { SimpleJson_tryParse } from \"./fable_modules/Fable.SimpleJson.3.24.0/SimpleJson.fs.js\";\nimport { Record, Union } from \"./fable_modules/fable-library-js.4.19.3/Types.js\";\nimport { record_type, union_type, list_type } from \"./fable_modules/fable-library-js.4.19.3/Reflection.js\";\nimport { Response_UserProfile_$reflection } from \"./StenaWeather.WeatherServiceUI.Shared/Profiles/API.js\";\nimport { ServerError_$reflection } from \"./StenaWeather.WeatherServiceUI.Shared/Errors.js\";\nimport { Result_Map, FSharpResult$2 } from \"./fable_modules/fable-library-js.4.19.3/Result.js\";\nimport { append as append_1, singleton, ofArray, contains, map as map_1 } from \"./fable_modules/fable-library-js.4.19.3/List.js\";\nimport { RouterModule_trySeparateLast, RouterModule_encodeQueryString, RouterModule_encodeParts, RouterModule_router, RouterModule_urlSegments } from \"./fable_modules/Feliz.Router.4.0.0/Router.fs.js\";\nimport { Cmd_OfPromise_either, Cmd_ofEffect, Cmd_none, Cmd_batch, Cmd_OfPromise_perform } from \"./fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { onProfilesAPI, onPortWindAPI, Cmd_OfAsync_eitherAsResult, Auth_userManager } from \"./Server.js\";\nimport { createObj, comparePrimitives, safeHash, equals } from \"./fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { noCmd, withCmd } from \"./UseElmish.js\";\nimport sws_white_vertical from \"../src/StenaWeather.WeatherServiceUI.Client/images/sws_white_vertical.svg\";\nimport { ofList } from \"./fable_modules/fable-library-js.4.19.3/Map.js\";\nimport { IconModule_View } from \"./Components/StenaWebUI/Icons/Icon.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport * as react from \"react\";\nimport { BoxModule_View } from \"./Components/StenaWebUI/Core/Box.js\";\nimport { empty, singleton as singleton_1, append, delay, toList } from \"./fable_modules/fable-library-js.4.19.3/Seq.js\";\nimport { SidebarMenuCollapsible_View, SidebarMenuHeading_View, SidebarMenuLink_View } from \"./Components/StenaWebUI/Panels/SidebarMenu.js\";\nimport { ToastPosition } from \"./Components/HotToast/HotToast.js\";\nimport { fromSeconds } from \"./fable_modules/fable-library-js.4.19.3/TimeSpan.js\";\nimport { ToasterModule_View } from \"./Components/HotToast/Toaster.js\";\nimport { CurrentSettingsDisplay } from \"./Components/TimeZones/Components.js\";\nimport { faCloudRain, faTemperatureHigh, faCloud, faMoon, faWater, faWind, faAnchor, faChartPie } from \"@fortawesome/free-solid-svg-icons\";\nimport { WeatherTypeModule_Parameter } from \"./StenaWeather.Domain/Weather.js\";\nimport { faCustomCurrentIcon } from \"../src/StenaWeather.WeatherServiceUI.Client/Components/StenaWebUI/Icons/CurrentIcon.js\";\nimport { SidebarMenu } from \"@stenajs-webui/panels\";\nimport { reactApi } from \"./fable_modules/Feliz.2.8.0/Interop.fs.js\";\nimport { saveToStorage, getDefaultUserSettings, tryGetFromStorage } from \"./Components/TimeZones/Storage.js\";\nimport { TimeZoneContext, TimezoneContext } from \"./Components/TimeZones/Context.js\";\nimport { defaultOf } from \"./fable_modules/fable-library-js.4.19.3/Util.js\";\nimport { ModelsView } from \"./Pages/Models.js\";\nimport { VesselsView } from \"./Pages/Vessels.js\";\nimport { SessionDetailsView } from \"./Pages/SessionDetails.js\";\nimport { DashboardView } from \"./Pages/Dashboard.js\";\nimport { PortWindDashboardView } from \"./Pages/PortWindDashboard.js\";\nimport { PortWindView } from \"./Pages/PortWind.js\";\nimport { LoadingScreenModule_View } from \"./Components/StenaWebUI/Panels/LoadingScreen.js\";\n\nexport function SessionStorage_setItem(key, value) {\n window.sessionStorage.setItem(key, value);\n console.log(some(toText(printf(\"Set item: %s -> %s\"))(key)(value)));\n}\n\nexport function SessionStorage_getItem(key) {\n const x = ofNullable(window.sessionStorage.getItem(key));\n console.log(some(toText(printf(\"Get item: %s -> %A\"))(key)(x)));\n return x;\n}\n\nexport function SessionStorage_setLoginReturnPage(page) {\n SessionStorage_setItem(\"loginReturnPage\", Convert_serialize(page, createTypeInfo(Page_$reflection())));\n}\n\nexport function SessionStorage_getLoginReturnPage() {\n return defaultArg(map((input) => {\n const matchValue = SimpleJson_tryParse(input);\n if (matchValue != null) {\n return Convert_fromJson(matchValue, createTypeInfo(Page_$reflection()));\n }\n else {\n throw new Error(\"Couldn\\'t parse the input JSON string because it seems to be invalid\");\n }\n }, SessionStorage_getItem(\"loginReturnPage\")), PageModule_defaultPage);\n}\n\nexport class LoginStep extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"InitAuthentication\", \"Authenticate\", \"LoadProfile\", \"AuthorizedLimitedAccess\", \"ProfileLoaded\"];\n }\n}\n\nexport function LoginStep_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.View.LoginStep\", [], LoginStep, () => [[], [], [], [[\"Item\", list_type(Page_$reflection())]], [[\"Item\", Response_UserProfile_$reflection()]]]);\n}\n\nexport class AuthState extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"InProgress\", \"Unauthorized\", \"LimitedAccess\", \"LoggedIn\"];\n }\n}\n\nexport function AuthState_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.View.AuthState\", [], AuthState, () => [[], [], [[\"Item\", list_type(Page_$reflection())]], [[\"Item\", Response_UserProfile_$reflection()]]]);\n}\n\nexport class State extends Record {\n constructor(Page, Auth) {\n super();\n this.Page = Page;\n this.Auth = Auth;\n }\n}\n\nexport function State_$reflection() {\n return record_type(\"StenaWeather.WeatherServiceUI.Client.View.State\", [], State, () => [[\"Page\", Page_$reflection()], [\"Auth\", AuthState_$reflection()]]);\n}\n\nexport function changePage(page, state) {\n if (!PageModule_isLoginPage(state.Page)) {\n SessionStorage_setLoginReturnPage(page);\n }\n return new State(page, state.Auth);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"UrlChanged\", \"NextLoginStep\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"StenaWeather.WeatherServiceUI.Client.View.Msg\", [], Msg, () => [[[\"Item\", Page_$reflection()]], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [LoginStep_$reflection(), ServerError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", LoginStep_$reflection()]], [[\"ErrorValue\", ServerError_$reflection()]]])]]]);\n}\n\nexport function init() {\n const pagesWithIpAccess = map_1((Item) => (new Page(4, [Item])), PortWindSubpageModule_all);\n const nextPage = PageModule_parseFromUrlSegments(RouterModule_urlSegments(window.location.pathname + window.location.search, 2));\n let cmd_1;\n switch (nextPage.tag) {\n case 7: {\n cmd_1 = Cmd_OfPromise_perform(() => Auth_userManager.signinRedirectCallback(), undefined, (_arg_1) => (new Msg(1, [new FSharpResult$2(0, [new LoginStep(2, [])])])));\n break;\n }\n case 8: {\n cmd_1 = Cmd_OfPromise_perform(() => Auth_userManager.signinSilentCallback(), undefined, (_arg_2) => (new Msg(1, [new FSharpResult$2(0, [new LoginStep(2, [])])])));\n break;\n }\n case 5: {\n cmd_1 = Cmd_OfPromise_perform(() => Auth_userManager.signinRedirect(), undefined, () => (new Msg(0, [new Page(5, [])])));\n break;\n }\n default:\n if (contains(nextPage, pagesWithIpAccess, {\n Equals: equals,\n GetHashCode: safeHash,\n })) {\n const cmd = Cmd_OfAsync_eitherAsResult(() => onPortWindAPI((x_1) => x_1.CheckAuthByIP()), (arg) => (new Msg(1, [Result_Map(() => (new LoginStep(3, [pagesWithIpAccess])), arg)])));\n cmd_1 = Cmd_batch(ofArray([Cmd_navigatePage(nextPage), cmd]));\n }\n else {\n cmd_1 = Cmd_batch(ofArray([Cmd_navigatePage(nextPage), singleton((dispatch) => {\n dispatch(new Msg(1, [new FSharpResult$2(0, [new LoginStep(0, [])])]));\n })]));\n }\n }\n return [changePage(nextPage, new State(nextPage, new AuthState(0, []))), cmd_1];\n}\n\nexport function update(msg, state) {\n const matchValue = state.Auth;\n let matchResult, page_3, pages_3, page_4, page_5, e, step;\n if (msg.tag === 1) {\n if (msg.fields[0].tag === 0) {\n matchResult = 7;\n step = msg.fields[0].fields[0];\n }\n else {\n matchResult = 6;\n e = msg.fields[0].fields[0];\n }\n }\n else {\n switch (msg.fields[0].tag) {\n case 8:\n case 7: {\n matchResult = 0;\n break;\n }\n case 6: {\n if (matchValue.tag === 2) {\n if (contains(msg.fields[0], matchValue.fields[0], {\n Equals: equals,\n GetHashCode: safeHash,\n })) {\n matchResult = 1;\n page_3 = msg.fields[0];\n pages_3 = matchValue.fields[0];\n }\n else {\n matchResult = 2;\n page_4 = msg.fields[0];\n }\n }\n else {\n matchResult = 3;\n }\n break;\n }\n case 5: {\n if (matchValue.tag === 2) {\n if (contains(msg.fields[0], matchValue.fields[0], {\n Equals: equals,\n GetHashCode: safeHash,\n })) {\n matchResult = 1;\n page_3 = msg.fields[0];\n pages_3 = matchValue.fields[0];\n }\n else {\n matchResult = 2;\n page_4 = msg.fields[0];\n }\n }\n else {\n matchResult = 4;\n }\n break;\n }\n default:\n if (matchValue.tag === 2) {\n if (contains(msg.fields[0], matchValue.fields[0], {\n Equals: equals,\n GetHashCode: safeHash,\n })) {\n matchResult = 1;\n page_3 = msg.fields[0];\n pages_3 = matchValue.fields[0];\n }\n else {\n matchResult = 2;\n page_4 = msg.fields[0];\n }\n }\n else {\n matchResult = 5;\n page_5 = msg.fields[0];\n }\n }\n }\n switch (matchResult) {\n case 0:\n return [state, Cmd_none()];\n case 1:\n return [changePage(page_3, state), Cmd_none()];\n case 2: {\n const v = changePage(page_4, new State(state.Page, new AuthState(0, [])));\n return withCmd(Cmd_OfPromise_perform(() => Auth_userManager.signinRedirect(), undefined, () => (new Msg(0, [SessionStorage_getLoginReturnPage()]))), v);\n }\n case 3: {\n const v_1 = new State(state.Page, new AuthState(0, []));\n return withCmd(Cmd_OfPromise_perform(() => Auth_userManager.signinRedirect(), undefined, () => (new Msg(0, [SessionStorage_getLoginReturnPage()]))), v_1);\n }\n case 4: {\n const v_2 = new State(state.Page, new AuthState(0, []));\n return withCmd(Cmd_OfPromise_perform(() => Auth_userManager.signoutRedirect(), undefined, () => (new Msg(0, [PageModule_defaultPage]))), v_2);\n }\n case 5:\n return [changePage(page_5, state), Cmd_none()];\n case 6:\n if (e.tag === 3) {\n return noCmd(new State(state.Page, new AuthState(1, [])));\n }\n else {\n const v_4 = new State(state.Page, new AuthState(0, []));\n return withCmd(Cmd_navigatePage(new Page(6, [])), v_4);\n }\n default:\n switch (step.tag) {\n case 1:\n return withCmd(Cmd_ofEffect((_arg_5) => {\n Auth_userManager.signinRedirect();\n }), state);\n case 2:\n return withCmd(Cmd_OfAsync_eitherAsResult(() => onProfilesAPI((x_3) => x_3.GetProfile()), (arg_1) => (new Msg(1, [Result_Map((Item_2) => (new LoginStep(4, [Item_2])), arg_1)]))), state);\n case 3:\n return noCmd(new State(state.Page, new AuthState(2, [step.fields[0]])));\n case 4: {\n const state_1 = new State(state.Page, new AuthState(3, [step.fields[0]]));\n if (state_1.Page.tag === 7) {\n const page_6 = SessionStorage_getLoginReturnPage();\n const v_9 = new State(page_6, state_1.Auth);\n return withCmd(Cmd_navigatePage(page_6), v_9);\n }\n else {\n return noCmd(state_1);\n }\n }\n default: {\n const onError = (_arg_3) => (new Msg(1, [new FSharpResult$2(0, [new LoginStep(1, [])])]));\n return withCmd(Cmd_OfPromise_either(() => Auth_userManager.getUser(), undefined, (arg) => defaultArgWith(map((_arg_4) => (new Msg(1, [new FSharpResult$2(0, [new LoginStep(2, [])])])), arg), onError), onError), state);\n }\n }\n }\n}\n\nfunction inLayout(currentPage, content) {\n const logoPath = sws_white_vertical;\n const link = (lbl, ic, nextPage) => {\n const iconObj = map((i) => {\n const p_1_2 = ofList(map_1((value_1) => value_1, singleton([\"children\", singleton(IconModule_View(ofList(map_1((value) => value, ofArray([[\"size\", 13], [\"icon\", i], [\"color\", \"var(--lhds-color-ui-100)\"]])), {\n Compare: comparePrimitives,\n })))])), {\n Compare: comparePrimitives,\n });\n return createElement(BoxModule_View, {\n p: p_1_2,\n });\n }, ic);\n const isSelected = (currentPage.tag === 2) ? ((nextPage.tag === 1) ? true : equals(currentPage, nextPage)) : equals(currentPage, nextPage);\n const p_1_3 = ofList(map_1((value_2) => value_2, toList(delay(() => append(singleton_1([\"onClick\", () => {\n Router_navigatePage(nextPage);\n }]), delay(() => append(singleton_1([\"id\", `menu${lbl}`]), delay(() => append(singleton_1([\"label\", lbl]), delay(() => append(isSelected ? singleton_1([\"selected\", true]) : empty(), delay(() => ((iconObj != null) ? singleton_1([\"left\", value_43(iconObj)]) : singleton_1([\"indent\", true]))))))))))))), {\n Compare: comparePrimitives,\n });\n return createElement(SidebarMenuLink_View, {\n p: p_1_3,\n });\n };\n const elm = toList(delay(() => {\n let p_1_4;\n return append(singleton_1((p_1_4 = ofList(map_1((value_6) => value_6, ofArray([[\"position\", new ToastPosition(2, [])], [\"toastOptions\", singleton([\"duration\", ~~fromSeconds(4)])]])), {\n Compare: comparePrimitives,\n }), createElement(ToasterModule_View, {\n p: p_1_4,\n }))), delay(() => {\n let p_1_5, elm_4, elm_6, children, p_1_6, p_1_7, p_1_8, p_1_9, p_1_10, props_16;\n const timezone = createElement(\"div\", {\n className: \"timezone-display-containter\",\n children: (p_1_5 = ofList(map_1((value_11) => value_11, ofArray([[\"spacing\", 2], [\"indent\", 4], [\"background\", \"--lhds-color-blue-900\"], [\"children\", singleton(createElement(CurrentSettingsDisplay, null))]])), {\n Compare: comparePrimitives,\n }), createElement(BoxModule_View, {\n p: p_1_5,\n })),\n });\n return append(singleton_1((elm_4 = ofArray([(elm_6 = singleton((children = [createElement(\"div\", {\n className: \"menu-logo\",\n children: createElement(\"img\", {\n src: logoPath,\n }),\n }), (p_1_6 = ofList(map_1((value_24) => value_24, singleton([\"label\", \"APPLICATIONS\"])), {\n Compare: comparePrimitives,\n }), createElement(SidebarMenuHeading_View, {\n p: p_1_6,\n })), link(\"Dashboard\", faChartPie, new Page(3, [])), link(\"Vessels\", faAnchor, new Page(1, [])), (p_1_7 = ofList(map_1((value_25) => value_25, ofArray([[\"label\", \"PortWind\"], [\"leftIcon\", faWind], [\"children\", ofArray([link(\"Table\", undefined, new Page(4, [new PortWindSubpage(0, [])])), link(\"Dashboard\", undefined, new Page(4, [new PortWindSubpage(1, [])]))])]])), {\n Compare: comparePrimitives,\n }), createElement(SidebarMenuCollapsible_View, {\n p: p_1_7,\n })), (p_1_8 = ofList(map_1((value_26) => value_26, singleton([\"label\", \"FORECAST MODELS\"])), {\n Compare: comparePrimitives,\n }), createElement(SidebarMenuHeading_View, {\n p: p_1_8,\n })), (p_1_9 = ofList(map_1((value_27) => value_27, ofArray([[\"label\", \"Wind\"], [\"leftIcon\", faWind], [\"children\", ofArray([link(\"Wind 10m\", undefined, new Page(0, [new WeatherTypeModule_Parameter(0, [])])), link(\"Wind 50m\", undefined, new Page(0, [new WeatherTypeModule_Parameter(1, [])]))])]])), {\n Compare: comparePrimitives,\n }), createElement(SidebarMenuCollapsible_View, {\n p: p_1_9,\n })), link(\"Current\", faCustomCurrentIcon, new Page(0, [new WeatherTypeModule_Parameter(2, [])])), (p_1_10 = ofList(map_1((value_28) => value_28, ofArray([[\"label\", \"Waves\"], [\"leftIcon\", faWater], [\"children\", ofArray([link(\"Waves\", undefined, new Page(0, [new WeatherTypeModule_Parameter(3, [])])), link(\"Wind Waves\", undefined, new Page(0, [new WeatherTypeModule_Parameter(7, [])])), link(\"Primary Swell\", undefined, new Page(0, [new WeatherTypeModule_Parameter(5, [])])), link(\"Secondary Swell\", undefined, new Page(0, [new WeatherTypeModule_Parameter(6, [])]))])]])), {\n Compare: comparePrimitives,\n }), createElement(SidebarMenuCollapsible_View, {\n p: p_1_10,\n })), link(\"Tide\", faMoon, new Page(0, [new WeatherTypeModule_Parameter(4, [])])), link(\"Cloud cover\", faCloud, new Page(0, [new WeatherTypeModule_Parameter(8, [])])), link(\"Air Temperature\", faTemperatureHigh, new Page(0, [new WeatherTypeModule_Parameter(9, [])])), link(\"Precipitation\", faCloudRain, new Page(0, [new WeatherTypeModule_Parameter(10, [])]))], (props_16 = {\n hideCloseButton: true,\n }, react.createElement(SidebarMenu, props_16, ...children)))), createElement(\"div\", {\n className: \"menu-content\",\n children: reactApi.Children.toArray(Array.from(elm_6)),\n })), timezone]), createElement(\"div\", {\n className: \"menu\",\n children: reactApi.Children.toArray(Array.from(elm_4)),\n }))), delay(() => {\n let elems_3;\n return singleton_1(createElement(\"div\", createObj(ofArray([[\"style\", {\n overflowX: \"hidden\",\n width: 100 + \"%\",\n }], (elems_3 = [createElement(\"div\", {\n className: \"content\",\n children: createElement(\"div\", {\n className: \"content-wrapper\",\n children: content,\n }),\n })], [\"children\", reactApi.Children.toArray(Array.from(elems_3))])]))));\n }));\n }));\n }));\n return createElement(\"div\", {\n className: \"layout\",\n children: reactApi.Children.toArray(Array.from(elm)),\n });\n}\n\nexport function MainView(mainViewInputProps) {\n let elements_1, matchValue_1, xs_3, tupledArg, queryString, matchValue, p_1_1;\n const dispatch = mainViewInputProps.dispatch;\n const state = mainViewInputProps.state;\n const timezoneSettingsFromStorage = defaultArgWith(tryGetFromStorage(), getDefaultUserSettings);\n const patternInput = reactApi.useState(timezoneSettingsFromStorage);\n const timeZoneContext = new TimezoneContext(patternInput[0], (ctx) => {\n saveToStorage(ctx);\n patternInput[1](ctx);\n });\n return RouterModule_router(createObj(ofArray([[\"hashMode\", 2], [\"onUrlChanged\", (arg_1) => {\n dispatch(new Msg(0, [PageModule_parseFromUrlSegments(arg_1)]));\n }], (elements_1 = singleton(createElement(TimeZoneContext, {\n ctx: timeZoneContext,\n children: (matchValue_1 = state.Auth, (matchValue_1.tag === 1) ? ((xs_3 = [createElement(\"div\", {\n children: [\"️⚠️ Insufficient permissions.\"],\n }), createElement(\"a\", {\n href: (tupledArg = PageModule_toUrlSegments(new Page(5, [])), (queryString = tupledArg[1], defaultArgWith(map((tupledArg_1) => RouterModule_encodeParts(append_1(tupledArg_1[0], singleton(tupledArg_1[1] + RouterModule_encodeQueryString(queryString))), 2), RouterModule_trySeparateLast(tupledArg[0])), () => RouterModule_encodeParts(singleton(RouterModule_encodeQueryString(queryString)), 2)))),\n onClick: (e) => {\n Router_goToUrl(e);\n },\n children: \"Logout\",\n })], react.createElement(react.Fragment, {}, ...xs_3))) : ((matchValue_1.tag === 2) ? ((matchValue = state.Page, (matchValue.tag === 7) ? defaultOf() : ((matchValue.tag === 5) ? defaultOf() : ((matchValue.tag === 6) ? defaultOf() : ((matchValue.tag === 0) ? inLayout(state.Page, createElement(ModelsView, {\n p: matchValue.fields[0],\n })) : ((matchValue.tag === 1) ? inLayout(state.Page, createElement(VesselsView, null)) : ((matchValue.tag === 2) ? inLayout(state.Page, createElement(SessionDetailsView, {\n sessionId: matchValue.fields[0],\n })) : ((matchValue.tag === 3) ? inLayout(state.Page, createElement(DashboardView, null)) : ((matchValue.tag === 4) ? ((matchValue.fields[0].tag === 1) ? inLayout(state.Page, createElement(PortWindDashboardView, null)) : inLayout(state.Page, createElement(PortWindView, null))) : defaultOf()))))))))) : ((matchValue_1.tag === 3) ? ((matchValue = state.Page, (matchValue.tag === 7) ? defaultOf() : ((matchValue.tag === 5) ? defaultOf() : ((matchValue.tag === 6) ? defaultOf() : ((matchValue.tag === 0) ? inLayout(state.Page, createElement(ModelsView, {\n p: matchValue.fields[0],\n })) : ((matchValue.tag === 1) ? inLayout(state.Page, createElement(VesselsView, null)) : ((matchValue.tag === 2) ? inLayout(state.Page, createElement(SessionDetailsView, {\n sessionId: matchValue.fields[0],\n })) : ((matchValue.tag === 3) ? inLayout(state.Page, createElement(DashboardView, null)) : ((matchValue.tag === 4) ? ((matchValue.fields[0].tag === 1) ? inLayout(state.Page, createElement(PortWindDashboardView, null)) : inLayout(state.Page, createElement(PortWindView, null))) : defaultOf()))))))))) : ((p_1_1 = ofList(map_1((value) => value, singleton([\"text\", \"Loading ...\"])), {\n Compare: comparePrimitives,\n }), createElement(LoadingScreenModule_View, {\n p: p_1_1,\n })))))),\n })), [\"application\", react.createElement(react.Fragment, {}, ...elements_1)])])));\n}\n\n","import { ProgramModule_mkProgram, ProgramModule_run } from \"./fable_modules/Fable.Elmish.4.2.0/program.fs.js\";\nimport { Program_withReactSynchronous } from \"./fable_modules/Fable.Elmish.React.4.0.0/react.fs.js\";\nimport { MainView, update, init } from \"./View.js\";\nimport { createElement } from \"react\";\n\nProgramModule_run(Program_withReactSynchronous(\"safer-app\", ProgramModule_mkProgram(init, update, (state_1, dispatch) => createElement(MainView, {\n state: state_1,\n dispatch: dispatch,\n}))));\n\n"],"names":["isArrayLike","x","Array","isArray","ArrayBuffer","isView","isHashable","GetHashCode","isDisposable","Dispose","disposeSafe","sameConstructor","y","Object","getPrototypeOf","constructor","Symbol","iterator","Enumerator","iter","this","current","cur","next","value","done","Error","getEnumerator","e","GetEnumerator","toIterator","en","hasNext","undefined","Lazy","factory","isValueCreated","Value","createdValue","IsValueCreated","padWithZeros","i","length","toString","padStart","dateOffset","date","date1","offset","kind","getTimezoneOffset","int32ToString","radix","int64ToString","ObjectRef","id","o","idMap","has","set","count","get","stringHash","s","h","len","charCodeAt","numberHash","bigintHash","combineHashCodes","hashes","h1","dateHash","getTime","structuralHash","arrayHash","Date","values","map","v","safeHash","physicalHash","identityHash","equalArraysWith","eq","equalArrays","equals","Equals","isEquatable","compareDates","xKeys","keys","yKeys","sort","equalObjects","xtime","ytime","comparePrimitives","compareArrays","comp","j","compareArraysWith","compare","CompareTo","isComparable","key","compareObjects","createObj","fields","obj","kv","WeakMap","curried","uncurry2","f","f2","a1","a2","curry2","uncurry3","a3","curry3","callStack","arguments","self","str","seqToString","cons","entries","_ref","k","join","name","String","Union","cases","tag","toJSON","concat","fieldStr","withParens","indexOf","unionToString","splice","other","Record","recordToJSON","_ref2","recordToString","recordGetHashCode","thisNames","recordEquals","result","recordCompareTo","FSharpRef","contents","getter","setter","contentsOrGetter","Exception","message","ensureErrorOrException","Promise","isPromise","P","MAX_DP","NAME","INVALID","INVALID_DP","INVALID_RM","DIV_BY_ZERO","UNDEFINED","NUMERIC","parse","n","nl","test","charAt","slice","replace","search","substring","c","round","Big","DP","RM","sd","rm","more","xc","isZero","findIndex","xci","idx","unshift","pop","stringify","doExponential","isNonzero","abs","cmp","isneg","yc","l","Math","max","div","a","b","dp","bl","bt","ri","bz","ai","al","r","rl","q","qc","qi","p","push","shift","gt","gte","lt","lte","minus","sub","t","xlty","plus","xe","ye","reverse","mod","ygtx","times","add","pow","one","prec","sqrt","half","toExponential","mul","toFixed","NE","PE","toNumber","Number","strict","toPrecision","valueOf","_Big_","normalize","TypeError","prototype","symbol","isNumeric","multiply","BigInt","toHex","asUintN","Decimal","_this","setInt32Bits","hexDigits","bits","zero","fromFloat64","trunc","toInt64","asIntN","toUInt64","toFloat64","toDecimal","isNegative","low","mid","high","scale","Uint8Array","bitSize","decDigits","hex","dec","decCount","d","carry","val","hexToDecimal","big","from","fromParts","shortDays","longDays","shortMonths","longMonths","parseRepeatToken","format","pos","patternChar","tokenLength","internalPos","parseNextChar","parseQuotedString","beginPos","quoteChar","foundQuote","currentChar","dateToStringWithCustomFormat","utc","cursorPos","localizedDate","DateTime","token","day","dayOfWeek","precision","floor","millisecond","padEnd","hour","dateOffsetToString","minute","month","second","getHours","getFullYear","utcOffsetText","toLocalTime","sign","hours","parseInt","minutes","quotedString","quotedStringLenght","nextChar","fromCharCode","nextChar2","ticksToUnixEpochMilliseconds","ticks","isMinus","dateToHalfUTCString","toISOString","_provider","dateWithOffset","dateToISOStringWithOffset","dateToStringWithOffset","toUTCString","toLocaleString","toLocaleDateString","toLocaleTimeString","printOffset","getMonth","getDate","getMinutes","getSeconds","getMilliseconds","dateToISOString","dateToStringWithKind","getTicks","ms","unixEpochMillisecondsToTicks","parseRaw","input","fail","trim","isNaN","m","exec","baseDate","timeInSeconds","timeParts","split","hourPart","parseFloat","toUpperCase","getUTCFullYear","getUTCMonth","getUTCDate","offsetInMinutes","detectUTC","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCSeconds","getUTCDay","getDay","d1","d2","escape","fsFormatRegExp","interpolateRegExp","formatRegExp","isLessThan","numericCompare","printf","cont","lastIndex","strParts","matches","strIdx","match","matchIndex","index","createPrinter","interpolate","valIdx","flags","padLength","formatReplacement","continuePrint","arg","toText","toFail","rep","toLowerCase","dateToString","zeroFlag","minusFlag","ch","pad","_strParts","_matches","_result","padArg","_len2","args","_key2","_padLength","_len3","_key3","str2","_","pattern","padLeft","intPart","decimalPart","repInt","repDecimal","rightZeros","padRight","thousandGroups","thousands","substr","endsWith","lastIndexOf","delimiter","xs","fromBase64String","b64Encoded","binary","atob","notSupported","bytes","isRight","trimEnd","_len7","chars","_key7","RegExp","startIndex","Some","unwrap","opt","some","toArray","defaultArg","defaultValue","defaultArgWith","defThunk","mapping","bind","binder","SR_indexOutOfBounds","SR_inputWasEmpty","Helpers_allocateArrayFromCons","indexNotFound","append","array1","array2","len1","len2","newArray","setItem_1","item_2","i_1","fill","target","targetIndex","start","mapIndexed","source","arrays","arrays_1","totalIdx","totalLength","idx_1","arr_2","take","array","find","predicate","matchValue","value_2","tryFind","zip","differentLengths","equalsWith","length1","length2","head","tryHead","item","setItem","FSharpList","tail","super","loop","xs_1_mut","ys_1_mut","xs_1","ys_1","matchValue_1","xt","value_1","yt","i_mut","h_mut","ListEnumerator$1","it","FSharpList_get_Empty","FSharpList_Cons_305B8EAC","FSharpList__get_IsEmpty","FSharpList__get_Length","FSharpList__get_Head","FSharpList__get_Tail","empty","singleton","isEmpty","tryLast","xs_mut","last","res","fold","folder","state","acc","iterate","action","unitVar","ofArrayWithTail","tail_1","item_1","ofArray","ys","collect","root","node","zs","xs_3","t_2","acc_mut","foldIndexed","tryPick","tryFindIndex","FSharpList__get_Item_Z524259A4","filter","choose","contains","reduce","exists","sortWith","comparer","arr","sortBy","projection","Compare","sortByDescending","where","SR_enumerationAlreadyFinished","SR_enumerationNotStarted","SR_inputSequenceEmpty","SR_notEnoughElements","Enumerator_notStarted","Enumerator_alreadyFinished","Enumerator_Seq","Enumerator_FromFunctions$1","dispose","Enumerator_noReset","Enumerator_FromFunctions$1_$ctor_58C54629","Enumerator_generateWhileSome","openf","compute","closef","curr","started","x_1","finish","mkSeq","Enumerator_Seq_$ctor_673A07F2","ofSeq","argName","Operators_NullArg","delay","generator","sources","outerOpt","innerOpt","finished","inner","outer","copyOfStruct","outerOpt_1","inner_1","outer_1","Enumerator_concat","ar","singleton_1","toArray_1","toList","ofArray_1","enumerator","xs_5","ofSeq_1","generate","create","chooser","e_1","tryHead_1","tryHead_2","isEmpty_1","iterateIndexed","skip","Enumerator_enumerateThenFinally","SetTreeLeaf$1","SetTreeLeaf$1_$ctor_2B595","SetTreeLeaf$1__get_Key","SetTreeNode$1","left","right","SetTreeNode$1_$ctor_5F465FC9","SetTreeNode$1__get_Left","SetTreeNode$1__get_Right","SetTreeNode$1__get_Height","SetTreeModule_countAux","t_mut","t2","value_3","tn","SetTreeModule_count","SetTreeModule_mk","tn_1","hl","hr","t2_1","SetTreeModule_rebalance","t1","t2_3","tn_2","t_3","t2_4","tn_3","t1h","t2h","t2_2","t2$0027","t2l","matchValue_2","t1$0027","matchValue_3","t1r","SetTreeModule_add","c_1","SetTreeModule_empty","SetTreeModule_mem","comparer_mut","k_mut","SetTreeModule_iter","f_mut","SetTreeModule_SetIterator$1","stack","SetTreeModule_collapseLHS","stack_mut","empty_1","rest","x2","xn","SetTreeModule_mkIterator","SetTreeModule_current","SetTreeModule_alreadyFinished","SetTreeModule_notStarted","SetTreeModule_mkIEnumerator","System.Collections.Generic.IEnumerator`1.get_Current","System.Collections.IEnumerator.get_Current","System.Collections.IEnumerator.MoveNext","SetTreeModule_moveNext","SetTreeModule_compare","l1_mut","l2_mut","SetTreeModule_compareStacks","l1","l2","x1_3","x2_3","x1n_2","x2n_2","matchResult","t1_6","x1_4","t2_6","x2_4","x1n_3","x2n_3","matchResult_1","t1_7","x1_5","t2_7","x2_5","x1n_4","x2n_4","c_3","x2n_5","c_2","matchResult_2","t1_8","x1_6","t2_8","x2_6","x1n_5","x2n_6","matchResult_3","t1_2","x1","x2_1","x1n","x2n","matchResult_4","t1_4","x1_2","x2_2","x1n_1","x2n_1","SetTreeModule_copyToArray","SetTreeModule_ofArray","folder_1","fold_1","FSharpSet","tree","this$","FSharpSet__ComputeHashCode","that","that_1","FSharpSet__get_Comparer","FSharpSet__get_Tree","map_1","toStringTag","FSharpSet__get_Count","size","clear","delete","FSharpSet__Contains","forEach","thisArg","iterate_1","FSharpSet_$ctor","set$","FSharpSet_Empty","element","FSharpSet__Add","ofList","elements","fold_2","SetTreeModule_ofList","ie","e_mut","SetTreeModule_mkFromEnumerator","SetTreeModule_ofSeq","Sub_Internal_SubId_toString","subId","Sub_Internal_Fx_tryStop","onError","ex","Sub_Internal_Fx_stop","subs","tupledArg","Sub_Internal_Fx_change","dispatch","dupes","toStop","toKeep","toStart","Sub_Internal_Fx_warnDupe","tupledArg_1","Sub_Internal_Fx_tryStart","Sub_Internal_NewSubs_calculate","newKeys","newSubs","Sub_Internal_NewSubs_update","reduceRight","delegateArg","delegateArg_1","foldBack_1","Sub_Internal_empty","Sub_Internal_diff","activeSubs","tuple","patternInput","patternInput_1","root2","root1","lacc","racc","t_4","t_5","partition","Event$2","delegates","_add","_remove","Publish","addHandler","removeHandler","AddHandler","RemoveHandler","Subscribe","OnNext","Trigger","senderOrValue","valueOrUndefined","sender","Event","interval","_enabled","_isDisposed","_intervalId","_timeoutId","Interval","AutoReset","_elapsed","Elapsed","Enabled","setInterval","setTimeout","clearTimeout","clearInterval","Close","Start","Stop","Observer","onNext","onCompleted","OnError","_e","OnCompleted","OperationCanceledError","setPrototypeOf","Trampoline","maxTrampolineCallCount","callCount","incrementAndCheck","hijack","protectedCont","ctx","cancelToken","isCancelled","onCancel","trampoline","err","Bind","computation","onSuccess","protectedBind","Combine","computation1","computation2","Delay","For","sequence","body","While","Return","protectedReturn","ReturnFrom","TryFinally","compensation","TryWith","catchHandler","Using","resource","guard","Zero","FSharpChoice$2","emptyContinuation","_x","defaultCancellationToken","cancelled","_id","_cancelled","_listeners","Map","cancel","listener","addListener","removeListener","register","$","catchAsync","work","Choice_makeChoice1Of2","fromContinuations","cancellationToken","continuation","exceptionContinuation","cancellationContinuation","startWithContinuations","Cmd_exec","cmd","call","Cmd_none","Cmd_batch","cmds","lists","xs_6","Cmd_ofEffect","effect","Cmd_OfAsyncWith_perform","task","ofSuccess","arg_1","_arg","Cmd_OfAsync_start","callback","returnVal","Timer","Timer_delay","startImmediate","Cmd_OfPromise_perform","then","defValue","tryParse","integralRangeStep","step","stop","stepFn","stepComparedWithZero","stepGreaterThanZero","comparedWithLast","makeRangeStepFunction","unfold","st_1","Enumerator_unfold","rangeDouble","RingState$1","RingBuffer$1","RingBuffer$1__Pop","__","wix","rix","items","rix$0027","RingBuffer$1__Push_2B595","wix_1","items_1","wix$0027","ix","generateIndexed","Program$4","init","update","subscribe","view","setState","termination","ProgramModule_mkProgram","model","f1","text","console","error","_arg_1","ProgramModule_withSetState","program","ProgramModule_view","ProgramModule_runWith","syncDispatch","rb","reentered","terminated","dispatch$0027","msg","processMsgs","nextMsg","msg_1","patternInput_2","model$0027","sub$0027","ex_1","ex_2","ProgramModule_runWithDispatch","NumberStyles","getRange","unsigned","bitsize","isValid","style","prefix","digits","AllowHexSpecifier","getRadix","invalidDigits","getInvalidDigits","regexMatch","validResponse","umin","umax","min","LazyProps$1","render","equal","Components_LazyView$1","Component","props","shouldComponentUpdate","nextProps","_nextState","Program_Internal_useRootApi","react","MapTreeLeaf$2","MapTreeLeaf$2_$ctor_5BDDA1","MapTreeLeaf$2__get_Key","MapTreeLeaf$2__get_Value","MapTreeNode$2","MapTreeNode$2_$ctor_Z39DE9543","MapTreeNode$2__get_Left","MapTreeNode$2__get_Right","MapTreeNode$2__get_Height","MapTreeModule_sizeAux","m_mut","m2","mn","MapTreeModule_size","MapTreeModule_mk","mn_1","m2_1","m_2","MapTreeModule_rebalance","m2_2","mn_2","m_3","m2_3","mn_3","MapTreeModule_add","MapTreeModule_empty","MapTreeModule_tryFind","MapTreeModule_iterOpt","MapTreeModule_iter","MapTreeModule_copyToArray","MapTreeModule_toArray","MapTreeModule_ofSeq","forLoopVar","MapTreeModule_ofArray","MapTreeModule_ofList","MapTreeModule_mkFromEnumerator","MapTreeModule_MapIterator$2","MapTreeModule_collapseLHS","MapTreeModule_mkIterator","MapTreeModule_current","MapTreeModule_alreadyFinished","MapTreeModule_notStarted","MapTreeModule_mkIEnumerator","MapTreeModule_moveNext","FSharpMap","combineHash","activePatternResult","FSharpMap__ComputeHashCode","e1","e2","m1","e1c","e2c","b1","b2","compareWith","kvp1","kvp2","FSharpMap__ContainsKey","FSharpMap__get_Item","FSharpMap__get_Count","FSharpMap_$ctor","MapTreeModule_find","MapTreeModule_mem","FSharpMap__TryFind","table","containsKey","m_1_mut","MapTreeModule_toList","CaseInfo","declaringType","TypeInfo","fullname","generics","construct","parent","enumCases","fullName","getHashCode","getGenerics","getRecordElements","k1","v1","k2","v2","class_type","record_type","union_type","caseNames","tuple_type","lambda_type","argType","returnType","option_type","generic","list_type","unit_type","string_type","bool_type","int32_type","float64_type","info","elemType","getElementType","getUnionCases","getFunctionElements","isFunction","gen","isTuple","startsWith","getUnionFields","case_","getRecordField","field","makeUnion","uci","expectedLength","makeRecord","_ref3","_t","Json","ok","Uri","uri","isAbsoluteUri","URL","tryCreateWithKind","original","tryCreateWithBase","baseUri","relativeUri","tryCreateImpl","kindOrUri","tryCreate","out","decodeURIComponent","asUrl","absoluteUri","href","scheme","protocol","host","absolutePath","pathname","query","pathAndQuery","url","fragment","hash","originalString","_bitsize","lessOrEqual","maxValue","getMaxValue","getPrefix","Parsimmon","seed","elem","isParser","isBuffer","Buffer","makeSuccess","status","furthest","expected","makeFailure","mergeReplies","hasOwnProperty","union","makeLineColumnIndex","line","column","lines","assertParser","assertNumber","assertFunction","assertString","repeat","string","amount","leftPad","char","rangeFromIndexAndOffsets","before","after","to","formatGot","lineWithErrorIndex","lineRange","lastLineNumberLabelLength","verticalMarkerLength","byteLineWithErrorIndex","columnByteIndex","byteRange","bytesPerLine","bytesAfter","bytesInChunks","chunks","chunkIndex","toChunks","data","byteLines","byteRow","byteValue","byteRangeToRange","byteLine","inputLines","lineWithErrorCurrentIndex","linesWithLineNumbers","lineSource","lineNumberLabel","isLineWithError","re","seq","parsers","numParsers","accum","seqMap","mapper","apply","results","alt","sepBy1","parser","separator","many","rs","regexp","group","assertRegexp","anchored","anchoredRegexp","fullMatch","groupMatch","succeed","lookahead","eof","formatError","type","or","alternative","wrap","leftParser","rightParser","middle","thru","wrapper","tieWith","assertArray","tie","prevResult","atMost","atLeast","fn","contramap","promap","g","mark","end","sepBy","notFollowedBy","desc","reply","fallback","ap","chain","of","digit","optWhitespace","cr","lf","newline","Parsimmon_many","Parsimmon_ofLazy","Parsimmon_digit","Parsimmon_seperateBy","content","others","Parsimmon_between","skipped","Parsimmon_map","Parsimmon_choose","ps","Parsimmon_satisfy","Parsimmon_str","Parsimmon_optionalWhitespace","Parsimmon_stringReturn","Parsimmon_seq2","Parsimmon_concat","strings","Parsimmon_seq3","jint","negJint","jfloat","jnumber","Item","jbool","jnull","stringLiteral","Parsimmon_oneOf","anyCharSnippet","otherParser","Parsimmon_orTry","withWhitespace","jvalue","comma","json$004080$002D1","arg_2","jsonParser","InteropUtil_isBigInt","InteropUtil_isObjectLiteral","SimpleJson_tryParse","Parsimmon_parse","SimpleJson_parse","SimpleJson_toString","arg_4","arg_3","SimpleJson_toPlainObject","jsObject","enumerator_1","SimpleJson_stringify","JSON","jsonValue","InteropUtil_isDateOffset","SimpleJson_parseNative$0027","$007CNativeString$007C_$007C","activePatternResult_1","$007CNativeNumber$007C_$007C","activePatternResult_2","$007CNativeBool$007C_$007C","$007CNull$007C_$007C","activePatternResult_4","$007CNativeArray$007C_$007C","map_2","activePatternResult_5","$007CNativeObject$007C_$007C","object","value_5","toList_1","map_3","SimpleJson_parseNative","DateTimeOffset","checkOffsetInRange","fromDate","offset2","offsetMatch","now","utcNow","year","UTC","setUTCFullYear","setFullYear","dateValue","createDate","ts","op_Subtraction","toOffset","fromDayNumber","dayNumber","guidRegex","guidRegexNoHyphen","guidRegexHex","hyphenateGuid","wsTrimAndLowered","_len5","_key5","littleEndian","getBytesInt32","DataView","buffer","byteOffset","byteLength","setInt32","getBigInt64","RecordField","FieldName","FieldType","PropertyInfo","UnionCase","CaseName","CaseTypes","Info","tryGetValue","addToSet","addToDict","dict","getItemFromDict","Dictionary","pairs","hashMap","pair","Dictionary__Add_5BDDA1","Dictionary__Clear","Dictionary__TryFind_2B595","p_1","arrayIndex","Dictionary__get_Count","Dictionary__Remove_2B595","Dictionary__ContainsKey_2B595","Dictionary__get_Item_2B595","Dictionary__set_Item_5BDDA1","Dictionary__TryFindIndex_2B595","outArg","HashSet","HashSet__Add_2B595","HashSet__Clear","HashSet__Contains_2B595","HashSet__get_Count","HashSet__Remove_2B595","HashSet__TryFindIndex_2B595","v_1","flattenFuncTypes","typeDef","$007CFuncType$007C_$007C","lazyToDelayed","_createTypeInfo","resolvedType","l_3","l_4","l_5","l_6","l_7","l_8","l_9","l_10","l_11","l_12","l_13","l_14","l_15","l_16","l_17","primType","$007CPrimitiveType$007C_$007C","types","createTypeInfo","isRecord","$007CRecordType$007C_$007C","l_1","activePatternResult_3","isUnion","prop","$007CUnionType$007C_$007C","l_2","isEnum","getEnumUnderlyingType","$007CListType$007C_$007C","elemType_1","activePatternResult_6","$007CResizeArrayType$007C_$007C","elemType_2","activePatternResult_7","$007CHashSetType$007C_$007C","elemType_3","activePatternResult_8","$007CArrayType$007C_$007C","elemType_4","activePatternResult_9","getTupleElements","$007CTupleType$007C_$007C","types_1","activePatternResult_10","$007COptionType$007C_$007C","elemType_5","activePatternResult_11","$007CNullable$007C_$007C","elemType_6","activePatternResult_12","$007CSetType$007C_$007C","elemType_7","activePatternResult_13","genArgs","$007CMapType$007C_$007C","keyType","valueType","activePatternResult_14","$007CDictionaryType$007C_$007C","keyType_1","valueType_1","activePatternResult_15","$007CSeqType$007C_$007C","elemType_8","activePatternResult_16","$007CAsyncType$007C_$007C","elemType_9","activePatternResult_17","$007CPromiseType$007C_$007C","elemType_10","typeInfoCache","ti_1","isPrimitive","enumUnion","every","case$","signedRound","ceil","fromTicks","fromDays","fromHours","fromMinutes","totalHours","op_Multiply","factor","Convert_insideBrowser","window","document","Convert_isDefined","Convert_usingFable3","Convert_InternalMap","Convert_flattenMap","Convert_$007CMapKey$007C_$007C","Convert_generateMap","json","Convert_$007CMapEmpty$007C_$007C","Convert_$007CMapOne$007C_$007C","Convert_$007CMapNode$007C_$007C","key_1","leftMap","rightMap","Convert_flatteFable3Map","matchValue_4","Convert_flattenFable3Lists","linkedList","Convert_arrayLike","Convert_unionOfRecords","Convert_isRecord","found","Convert_optional","Convert_isQuoted","Convert_betweenQuotes","Convert_removeQuotes","Convert_fromJsonAs","input_mut","typeInfo_mut","foundCase","foundCase_1","testExpr","values_8","tree_1","typeInfo","value_4","value_6","value_7","value_8","value_9","value_10","value_11","value_12","value_13","value_14","value_15","value_16","value_17","value_18","value_19","value_20","value_21","value_22","value_23","value_24","value_25","value_26","getlElemType","value_27","getElemType","value_28","getElemType_1","value_29","genericJson","value_30","value_31","value_32","value_33","value_34","value_35","value_36","value_37","value_38","value_39","value_40","value_41","value_42","getTypes_1","jsonValue_5","optionalTypeDelayed_5","value_49","value_50","caseName_4","getTypes_2","caseName_5","getTypes_3","getFields","serializedRecord","caseValue","getTypes_4","elementTypeDelayed","values_4","elementTypeDelayed_1","values_5","elementTypeDelayed_2","elementTypeDelayed_3","values_6","elementTypeDelayed_4","values_7","array_12","tupleTypesDelayed","dict_1","getTypes_5","getTypes_6","tuples","getTypes_7","tuples_1","dict_2","getTypes_8","getType","getTypes_9","getType_1","toLocaleLowerCase","NaN","parse_1","parse_2","underlyingType","originalType","name_2","outArg_1","tryParse_1","arg_5","WorkerGlobalScope","parse_4","parse_5","unionType","caseName_1","values_1","caseName_2","tryFind_1","foundCase_2","foundCase_3","foundCase_4","arg_13","arg_14","expectedCases","case$_1","arg_10","case$_2","caseInfo","caseName_3","caseType","input_1","typeInfo_1","expectedCases_1","case$_3","arg_19","matchValue_5","caseIndex","fieldValues","foundCase_5","value_48","arg_21","arg_22","foundDiscriminatorKey","tryFind_2","keyword","discriminatorValueJson","discriminatorValue","foundUnionCase","tryFind_3","case$_4","case$_5","arg_24","arg_26","arg_23","unexpectedJson","expectedType","parse_6","get$","_arg_2","toInt64_1","patternInput_3","caseTypes","_arg_3","case$_6","expectedCases_2","case$_7","arg_33","patternInput_4","caseTypes_1","_arg_4","case$_8","expectedCases_3","case$_9","arg_37","patternInput_5","cases_1","matchResult_5","caseName_6","caseName_8","values_3","otherwise_6","_arg_5","case$_10","expectedCases_4","case$_11","arg_41","_arg_6","case$_12","foundCaseName","caseInfo_4","expectedCases_5","_arg_7","unexpectedJson_1","expectedType_1","elementType","value_55","elementType_1","value_57","elementType_2","value_59","elementType_3","ofList_1","value_61","elementType_4","value_63","tupledArg_2","patternInput_6","recordType","_arg_8","list_10","clo_48","fieldType","fieldName","_arg_9","tupledArg_3","dictKeys","arg_50","arg_49","recordFields","arg_53","_arg_10","name_1","arg_56","patternInput_7","keyValuePair","patternInput_8","pairs_1","keyValuePair_1","output","patternInput_9","keyType_2","pairs_2","tupledArg_4","output_1","forLoopVar_1","hashset","enumerator_2","patternInput_10","valueType_5","keyType_3","matchValue_7","matchValue_8","matchResult_6","comparer_2","tree_2","comparer_3","tree_3","matchValue_10","inputJson","pairs_3","tupledArg_5","key_6","pairs_4","tupledArg_6","key_7","unknownType","arg_59","arg_60","arg_61","arg_62","Convert_fromJson","Convert_quoteText","inputText","escapable","meta","Convert_serialize","value_mut","toString_2","toString_3","map_4","element_1","element_2","element_3","element_4","elementType_5","element_5","value_91","usedCase","find_1","serializedFields_1","serializedValues","serializedKey","serializedValue","serializedValues_1","serializedKey_1","serializedValue_1","tupleTypes","index_1","element_6","Wind","Direction","Speed","Wind_$reflection","Current","Current_$reflection","Waves","Height","Period","Waves_$reflection","Tide","Sealevel","Tide_$reflection","Swell","Swell_$reflection","Clouds","Coverage","Clouds_$reflection","AirTemperature","Temperature","AirTemperature_$reflection","Precipitation","Precipitation_$reflection","PrecipitationCategory","Category","Description","PrecipitationCategory_$reflection","WeatherSymbol","Code","WeatherSymbol_$reflection","WeatherType","WeatherType_$reflection","WeatherTypeModule_Parameter","WeatherTypeModule_Parameter_$reflection","WeatherTypeModule_ParameterAttributeMetadata","Name","Type","UnitOfMeasure","WeatherTypeModule_ParameterModule_metadata","WeatherTypeModule_ParameterModule_fromWeatherType","WeatherTypeModule_ParameterModule_tryParse","WeatherTypeModule_ParameterModule_name","reactApi","useEffect","getDisposable","useEffectReact","disposable","useEffectWithDeps","deps","useLayoutEffect","useLayoutEffectReact","createDisposable","useCallbackRef","lastRenderCallbackRef","useRef","callbackRef","useCallback","RouterModule_String_$007CPrefix$007C","RouterModule_String_$007CSuffix$007C","suffix","RouterModule_encodeQueryString","queryStringPairs","encodeURIComponent","RouterModule_encodeParts","routeMode","path","path_1","path_2","path_4","RouterModule_normalizeRoute","part","RouterModule_trySeparateLast","RouterModule_nav","mode","history","pushState","replaceState","ev","createEvent","initEvent","dispatchEvent","RouterModule_urlSegments","segment","segment_1","y_1","splitters","options","removeEmpty","splits","reg","findSplits","candidate","RouterModule_router","renderElement","memoElementType","memo","displayName","props_2","withKey","propsWithKey","createElement","onChange","urlChanged","onUrlChanged","location","RouterModule_onUrlChange","hashMode","destroyFunc","calledOnce","renderAfterCalled","optDispose","disposeOption","useEffectDisposableOnce","navigator","userAgent","addEventListener","removeEventListener","ev_1","useEffectOnce","application","Route_$007CQuery$007C_$007C","urlParams","URLSearchParams","entry","PortWindSubpage","PortWindSubpage_get_Default","PortWindSubpageModule_name","PortWindSubpageModule_parse","PortWindSubpageModule_all","Page","Page_$reflection","PageModule_defaultPage","PageModule_parseFromUrlSegments","tryParse_2","Route_$007CGuid$007C_$007C","subpage","PageModule_noQueryString","segments","PageModule_toUrlSegments","Router_navigatePage","queryString","Cmd_navigatePage","queryString_1","Response_UserProfile","Email","ProfilesAPI","GetProfile","ProfilesAPI_RouteBuilder","ServerError","ServerErrorModule_title","ServerErrorModule_text","FSharpResult$2","Result_Map","ResultValue","ErrorValue","HttpMethod","RequestBody","HttpRequest","Url","Headers","WithCredentials","HttpResponse","StatusCode","ResponseBody","RemoteBuilderOptions","CustomHeaders","BaseUrl","Authorization","RouteBuilder","CustomResponseSerialization","ProxyRequestException","response","errorMsg","reponseText","ProxyRequestException_$ctor_76BC5104","ProxyRequestException__get_Response","ProxyRequestException__get_StatusCode","Oidc_Log","Log","Oidc_UserManager","UserManager","defaultRequestConfig","HttpMethod_1","post","withHeaders","headers","req","withCredentials","withCredentials_1","withBody","sendAndRead","preparation","resultMapper","request_1","xhr","XMLHttpRequest","open","cancellationTokenRegistration","abort","setRequestHeader","onreadystatechange","readyState","isCancellationRequested","send","responseText","sendAndReadBinary","responseType","xhr_1","RemotingModule_createApi","clo","RemotingModule_withRouteBuilder","builder","RemotingModule_withAuthorizationHeader","Remoting_buildProxy_64DC51C","schemaType","fieldTypes","typeName","func","funcArgs","argumentCount","returnTypeAsync","binaryInput","route","baseUrl","Proxy_combineRouteWithBaseUrl","funcNeedParameters","contentType","inputArgumentTypes","executeRequest","Proxy_isAsyncOfByteArray","onOk","serializer","typ_mut","typ","Proxy_getReturnType","requestBody","withCredentials_4","statusCode","response_1","responseAsBlob","Blob","blob","reader","FileReader","onload","readAsText","response_2","returnType_1","requestBody_1","response_3","parsedJson","arg0","arg1","arg2","arg3","arg4","arg5","arg6","arg7","matchValue_6","inputArguments","arg_9","Proxy_proxyFetch","delegateArg_2","delegateArg_3","delegateArg_4","delegateArg_5","delegateArg_6","delegateArg_7","delegateArg_8","delegateArg_9","delegateArg_10","delegateArg_11","delegateArg_12","delegateArg_13","delegateArg_14","delegateArg_15","delegateArg_16","delegateArg_17","delegateArg_18","delegateArg_19","delegateArg_20","delegateArg_21","delegateArg_22","delegateArg_23","delegateArg_24","delegateArg_25","delegateArg_26","delegateArg_27","delegateArg_28","delegateArg_29","delegateArg_30","delegateArg_31","delegateArg_32","delegateArg_33","delegateArg_34","Point","Longitude","Latitude","Point_$reflection","TimePoint","TimePoint_$reflection","SpatialDistance","LonDist","LatDist","sqr","Provider","Provider_$reflection","ModelInfo","Created","PointForecast","Weather","ForecastSource","Model","Rectangle","North","East","South","West","ModelArea","PolygonUtils_isPointInsidePolygon","polygon","length_1","pi","pj","pairwise_1","PointBasedModelCalculation","ModelType","SpatialResolution","TemporalResolution","Area","TemporalRange","SupportedWeatherTypes","UpdateFrequency","OutdatedAlertCoefficient","ModelKey","ModelKey_$reflection","ModelUpdateStatus","ModelUpdateStatus_$reflection","ModelUpdateStatusModule_isUpToDate","Models_meps","Models_amm15v2","Models_amm15s","Models_wam","Models_nemo","Models_pmp3g","Models_ukvIeUk","Models_ukvIeGlobal","Models_ukvNlUk","Models_getmNordsee","Models_getmDenmark","Models_getmBaltic","Models_ww3Nordbalt","Models_ww3InnerDk","Models_harmMetIr","Models_dmiEdrDkssIdw","Models_dmiEdrDkssNsbs","Models_dmiEdrWamDw","Models_dmiEdrWamNatlant","Models_dmiEdrHarmDini","Models_dmiStacDkssIdw","Models_dmiStacDkssNsbs","Models_dmiStacWamDw","Models_dmiStacWamNatlant","Models_dmiStacHarmDini","Models_all","Request_UpdatePriority","Parameter","Models","Response_Model","Priority","DataSourceDescription","ModelName","SpatialResolutionInKm","LastUpdated","ForecastCreated","SourceType","IsRotated","Status","ModelsAPI","GetModels","SavePriorities","ModelsAPI_RouteBuilder","Response_SessionType","Response_VesselSession","SessionId","CreatedAt","SessionType","Response_VesselInfo","VesselId","VesselName","Sessions","VesselsAPI","GetVesselsInfo","VesselsAPI_RouteBuilder","Response_SessionModelSetup","Response_RouteWaypoint","Reference","Response_RouteWaypoint_$reflection","Response_SessionParamModelSetup","ModelSetup","Response_SessionState","Token","Response_SessionDetail","Parameters","Waypoints","SessionStates","Response_SessionInterpolatedForecast","InterpolationInfo","Source","Response_RouteInterpolatedForecast","Forecasts","SessionDetailsAPI","GetSessionDetails","GetSessionResponseDetail","SessionDetailsAPI_RouteBuilder","Downloaded","DashboardsAPI","DashboardsAPI_RouteBuilder","SensorId","SensorId_$reflection","SensorId__get_Value","SensorMetaData","Imei","Location","Address","Urls","QuayOrientation","QuayFlipVessel","Visible","PortWindWeather","WindSpeed","WindSpeedAverage","WindDirection","GustWindSpeed","MaxGustWindSpeed","WaveHeight","TideHeight","TidalFlowSpeed","PortWindWeatherResult","PortWindAPI","GetSensors","GetWeather","CheckAuthByIP","PortWindAPI_RouteBuilder","exnToError","_len","_key","anonRecord_type","Cmd_OfAsync_eitherAsResult","resultMsg","Cmd_OfAsyncWith_either","start_1","Auth_settings","endpoint","config","tenantId","client_id","clientId","post_logout_redirect_uri","redirect_uri","silent_redirect_uri","authority","automaticSilentRenew","filterProtocolClaims","loadUserInfo","response_type","scope","Auth_userManager","logger","debug","warn","userManager","events","addAccessTokenExpiring","signinSilent","withAuth","getUser","conts","catch","access_token","onModelsAPI","onSessionDetailsAPI","onPortWindAPI","noCmd","withCmd","IconModule_View","color","icon","x_2","Icon","BoxModule_View","boxModule_ViewInputProps","shadow","background","spacing","indent","x_3","height","x_4","children","x_5","Box","SidebarMenuCollapsible_View","sidebarMenuCollapsible_ViewInputProps","label","leftIcon","SidebarMenuCollapsible","SidebarMenuHeading_View","sidebarMenuHeading_ViewInputProps","SidebarMenuHeading","SidebarMenuLink_View","sidebarMenuLink_ViewInputProps","loading","selected","x_6","onClick","x_7","SidebarMenuLink","ToastPosition","ToastPositionModule_value","ToastModule__customToast","toast","custom","ToastModule_propsToRecord","duration","position","ToastModule_customToast","ToasterModule_View","toasterModule_ViewInputProps","reverseOrder","toastOptions","Toaster","DateTimeSettings","TimeZoneOffset","UseLocalTime","DateTimeSettings_$reflection","TimezoneContext","Settings","SetSettings","dateTimeSettings","timeZoneContext","contextObject","createContext","TimeZoneContext","timeZoneContextInputProps","NumericTextInputModule_View","numericTextInputModule_ViewInputProps","contentRight","hideButtons","onValueChange","NumericTextInput","ButtonVariantModule_value","ButtonSize","ButtonSizeModule_value","ButtonBase_ViewPrimary","buttonBase_ViewPrimaryInputProps","loadingLabel","success","successLabel","rightIcon","x_8","x_9","x_10","variant","x_11","x_12","disabled","x_13","PrimaryButton","ButtonBase_ViewSecondary","SecondaryButton","ButtonBase_ViewFlat","inverted","x_14","FlatButton","SwitchModule_View","switchModule_ViewInputProps","Switch","ModalModule_view","isOpen","headerText","width","onRequestClose","Modal","cn","styles","Components$002Emodule","cnFn","cnFns","names","className","classes","DateTimeOffset_dateStr","DateTimeOffset_timeStr","DateTimeOffset_dateTimeStr","DateTimeOffset_adjustFromContext","dateTime","DateTimeOffset_dateTimeWithTimezone","useContext","DateTimeOffset_DateWithTimezone","dateTimeOffset_DateWithTimezoneInputProps","DateTimeOffset_TimeWithTimezone","dateTimeOffset_TimeWithTimezoneInputProps","DateTimeOffset_DateTimeWithTimezone","dateTimeOffset_DateTimeWithTimezoneInputProps","TimezoneSettingsForm","timezoneSettingsFormInputProps","elm_2","p_1_1","p_1_2","p_1_4","closeModal","initial","useState","setHoursState","initial_1","minutes_2","setMinutesState","elm","hours_1","minutes_1","Children","nowOffset","CurrentSettingsDisplay","currentTime","setModalVisible","modalVisible","hoursOffset","minutesOffset","displayValue","switch$","xs_2","toggleModal","settingsButton","xs_10","faCustomCurrentIcon","iconName","getDefaultUserSettings","BannerModule_View","bannerModule_ViewInputProps","Banner_1","HeadingModule_View","headingModule_ViewInputProps","Heading","ErrorView_serverErrorToast","ErrorView_errorToast","ErrorView_Cmd_ofError","ErrorView_Cmd_error","PageTitle_titleWith","mkText","PageTitle_title","Point_toPosition","lat","lng","Polygon_View","polygon_ViewInputProps","positions","pathOptions","fillOpacity","Polygon","Rectangle_View","rectangle_ViewInputProps","weight","bounds","TextVariant","TextVariantModule_value","TextSize","TextSizeModule_value","UserSelectType","UserSelectTypeModule_value","WhiteSpaceType","WhiteSpaceTypeModule_value","TextModule_View","userSelect","whiteSpace","Text$","Util_ElmishState$3","dependencies","program_1","queuedMessages","finalDispatch","ProgramModule_init","needsDispose","model_5","dispatch_1","mapInit","mapUpdate","mapView","mapSetState","mapSubscribe","mapTermination","model_3","ProgramModule_map","_init","cmd$0027","msg_2","model_4","Util_ElmishState$3_$ctor_Z29FF63CF","React_useElmish_Z6C327F2E","arg$0027","dependencies$0027","Util_ElmishState$3__IsOutdated_1954DBC6","useSyncExternalStore","Util_ElmishState$3__get_Subscribe","Util_ElmishState$3__get_State","subscribed","col","LinkModule_View","linkModule_ViewInputProps","Link","StandardTableModule_view","StandardTable","formatToWholeUnits","sp","totalSeconds","tm","totalMinutes","th","td","totalDays","formatToMultipleUnits","CheckboxWithLabelModule_View","checkboxWithLabelModule_ViewInputProps","indeterminate","CheckboxWithLabel","SwitchWithLabelModule_View","switchWithLabelModule_ViewInputProps","textColor","SwitchWithLabel","MapEventsComponent","useMapEvents","click","latlng","React","MapEvents_View","mapEvents_ViewInputProps","lon","MapEventsControl","Popup_View","popup_ViewInputProps","onClose","closeButton","closeOnClick","Popup","Legend","legendDiv","createLegendControl","L","extend","onAdd","innerHTML","html","componentDidMount","addTo","componentWillUnmount","remove","useMap","_extends","LegendPosition","LegendPositionModule_value","Legend_View","legend_ViewInputProps","server","LegendControl","MapContainer_View","mapContainer_ViewInputProps","center","zoom","scrollWheelZoom","maxBoundsViscosity","MapContainer","Msg","MapModel","Color","Label","MapModelModule_ofModel","colors","i_2","getColor","State","MapModels","ExpandMap","ModelsReordered","ModelCoveragePoint","models","models_1","newModels","oldIndex","newIndex","itemsList","itemTobeMoved","equals_1","splitAt","reorder","log","reqData","Item_1","modelRectangle","area","Models$002Emodule","ModelUpdateStatus_value","modelLegend","renderCellForStatus","t_7","t_1","faCircle","findParentElm","name_mut","parentElement","tagName","hasDroppableClass","el","addDroppableClass","removeDroppableClass","RenderDraggableIcon","elems","currentTarget","tr","tbody_1","onDrop","getTr","ondragenter","preventDefault","ondragleave","rect","getBoundingClientRect","clientY","top","bottom","clientX","ondragover","ondrop","setDroppable","dataTransfer","setDragImage","effectAllowed","cursor","faGripVertical","renderModelCell","renderFullNameCell","renderResolution","modelsCoveragePopup","mx","txt","ModelsView","modelsViewInputProps","elm_4","elm_6","elm_14","p_1_6","elems_7","p_1_10","state_1","paramName","getHeader","coveringModels","ModelAreaModule_isPointWithin","itemCount","columnProps","columnProps_1","columnProps_2","columnProps_3","columnProps_4","columnProps_5","columnProps_6","columnProps_7","columnProps_8","columnProps_9","columnProps_10","columnProps_11","columnProps_12","o_1","changePriority","maxPriority","faCaretUp","faCaretDown","RenderEditablePriorityCell","i_3","i_4","u","i_5","i_6","i_7","i_8","i_9","i_10","p_1_3","elm_10","f_1","elm_12","buttonId","groupProps","groupProps_1","p_1_7","value_45","props_17","attribution","TileLayer","p_1_8","value_46","p_1_9","value_47","IndentModule_View","indentModule_ViewInputProps","num","Indent","SpacingModule_View","spacingModule_ViewInputProps","Spacing","ColumnModule_View","columnModule_ViewInputProps","alignItems","justifyContent","gap","Column","RowModule_View","rowModule_ViewInputProps","flex","Row","SpaceModule_View","spaceModule_ViewInputProps","Space","LoadingScreenModule_View","loadingScreenModule_ViewInputProps","LoadingScreen","Vessels$002Emodule","Vessels","IsLoading","vessels","vesselBox","vessel","p_1_36","visibleSessions","historicalSession","p_1_37","p_1_13","p_1_12","p_1_5","p_1_11","p_1_23","p_1_22","p_1_35","p_1_34","p_1_27","t_29","p_1_28","p_1_33","p_1_30","p_1_32","p_1_31","p_1_16","session","p_1_21","p_1_18","p_1_20","p_1_19","faInfoCircle","VesselsView","distinct","hashSet","ChipModule_View","chipModule_ViewInputProps","onClickRemove","Chip","rotateDirection180","timeInContext","strF","time","DivsForStandardTable_defaultDiv","DivsForStandardTable_timeChip","cn_2","DivsForStandardTable_timeDiv","DivsForStandardTable_dateTimeDiv","TooltipVariantModule_value","TooltipModule_View","placement","disablePadding","Tooltip","SeparatorLineModule_View","separatorLineModule_ViewInputProps","vertical","SeparatorLine","LabelModule_View","labelModule_ViewInputProps","optional","maxCharacters","textWidth","Polyline_View","polyline_ViewInputProps","dashArray","Polyline","RotatedMarker","createLayerComponent","instance","LeafletMarker","context","overlayContainer","marker","prevProps","setLatLng","setIcon","zIndexOffset","setZIndexOffset","opacity","setOpacity","rotationAngle","setRotationAngle","rotationOrigin","setRotationOrigin","dragging","draggable","enable","disable","Marker_View","marker_ViewInputProps","FeatureGroup_View","featureGroup_ViewInputProps","eventHandlers","FeatureGroup","CollapsibleModule_View","collapsibleModule_ViewInputProps","collapsed","Collapsible","ReactRouterCrumbComponent","dest","Crumb","BreadCrumbsModule_View","breadCrumbsModule_ViewInputProps","BreadCrumbs","CrumbModule_View","crumbModule_ViewInputProps","Crumb_1","ReactRouterCrumb_View","reactRouterCrumb_ViewInputProps","DrawerModule_view","slideFrom","portalTarget","zIndex","Drawer","fromTryMethod","Forecast","SessionHistoryDay","Date$","IsCollapsed","SessionDetail","Detail","SessionHistory","SelectedForecast","WaypointForecastToDisplay","Sidebar","UseNauticalUnits","groupSessionsByDay","sessions","date_1","sortForecast","forecasts","wp","details","detail","lastItem","lastGuid","viewDetail","sessionHistory","lastDay","days","selectedIsOpen","SessionDetails$002Emodule","ColumnName","ColumnNameModule_fromValue","ColumnNameModule_value","ProcessingStatus","getStatus","pars","fc","parsLength","howMany","DivsForStandardTable_modelNameAndCreatedDiv","created","DivsForStandardTable_defaultDivWithTooltip","tooltipValue","DivsForStandardTable_statusIcon","t_6","faHourglassHalf","faBan","faCheckCircle","getUnitForParamType","weather","paramType","getFloatValueByColumnName","propName","forecastWeatherType","name_25","WeatherTypeModule_declaringType","getDivByColumnNameFloat","tooltip","unit","columnName","useNauticalUnits","computedValue","transform","faLongArrowAltUp","DivsForStandardTable_directionsDiv","faSun","faCloudSun","faCloud","DivsForStandardTable_cloudsDiv","toGpsString","lonStr","getToolTip","renderCell","waypoint","weatherTypeOption","weatherType","forecast","changeUnits","DivsForStandardTable_loadingDiv","maxLength","DivsForStandardTable_coordDiv","DivsForStandardTable_waypointButton","ForecastMap_getBounds","fxo","lxo","fx","lx","ForecastMap_view","wpToShow","arg_1_1","arg_2_1","arg_3_1","closestPointIndex","currentLocation","up_arrow","angle","bearing","head_1","fcs","p1","p2","iconUrl","iconSize","iconAnchor","popupAnchor","f_2","sessionDetails","wpToShow_","wpToShow__1","statusToDisplay","append_1","pointForecast","modelPropertiesNames","param","propertyName","ForecastMap_viewPoint","ForecastMap_viewInner","StatelessCollapsible","statelessCollapsibleInputProps","onClickHandler","isCollapsed","SessionHistory_SessionHistoryDayGroup","sessionHistory_SessionHistoryDayGroupInputProps","sessionsDay","selectedToken","elems_1","InfoBanners","waypointsCount","forecast_1","firstForecast","lastForecast","forecastRange","lastForecastString","stats","Full","Missing","Partial","getStats","SessionDetailsView","sessionDetailsViewInputProps","elm_8","elm_16","elm_18","sessionId","init_1","groupsAndColumns","getColumnHeadersWithColumnOrder","tableItems","kvp","FSharpMap__get_Values","w","FSharpMap__Add","p_14","DivsForStandardTable_statusIconDiv","p_15","group_1","columns_1","append_2","f_3","_arg_11","faTimes","currentToken","s_1","TagModule_View","Tag","ProgressBarModule_ViewLinear","percent","strokeWidth","strokeColor","Line","Warnings","Cautions","Updated","getNextAlarmTriggeredDateTimeOffset","alertCoef","updateFreq","lastUpdated","ticks_1","Dashboard$002Emodule","StandardTable_constants_modelColumnName","StandardTable_constants_statusColumnName","StandardTable_constants_updateFreqColumnName","StandardTable_constants_lastUpdatedColumnName","StandardTable_constants_lastUpdatedDtColumnName","StandardTable_constants_forecastCreatedDtColumnName","StandardTable_constants_expectedUpdateColumnName","StandardTable_constants_expectedUpdateDtColumnName","StandardTable_constants_alarmCriteriaColumnName","StandardTable_constants_triggerAlarmColumnName","StandardTable_constants_triggerAlarmDtColumnName","StandardTable_constants_iconColumnName","StandardTable_constants_defaultColumnWidth","StandardTable_constants_warningsHeader","StandardTable_constants_cautionsHeader","StandardTable_constants_onTimeHeader","StandardTable_divs_emptyDiv","standardTable_divs_emptyDivInputProps","_arg1","StandardTable_divs_renderUpdateFreqCell","standardTable_divs_renderUpdateFreqCellInputProps","StandardTable_divs_renderSomeTimeAgoCell","StandardTable_divs_renderExpectedUpdateCell","StandardTable_divs_renderLastUpdatedCell","StandardTable_divs_renderDefaultDateTimeOffsetFormattedCell","StandardTable_divs_renderCellForStatus","StandardTable_divs_renderIconCell","faExclamationTriangle","faExclamation","StandardTable_divs_renderModelCell","StandardTable_divs_renderAlarmCriteriaCell","pct","tagValue","StandardTable_divs_renderAlarmDateTimeOffset","StandardTable_divs_renderAlarmProgressBar","nextAlarmDt","fromTicks_1","nextAlarmIn","progressPct","DashboardView","warningsColumnOrder","columnOrder","itemsToExclude","infoIconTooltipText","header","getNoDataText","p_3","arg00$0040_1","i_11","i_12","msToKnotsFactor","msToKnots","Impl_allowsPassiveEvents","passive","ship_at_quay","colorCode","isFlipped","Svg","path_3","path_5","path_6","path_7","path_8","Width","autoReloadPeriod","PortWindData","MainView","Theme","ThemeModule_colorMapping","theme","Sensors","SelectedSensor","WeatherHistory","UnitsMetersPerSeconds","State__get_UnitText","State__get_UnitValue","f1_1","sensors_1","value_133","sleep","millisecondsDueTime","tokenId","timeoutId","ViewHelpers_mkColumnWith","ViewHelpers_mkColumn","ViewHelpers_mkRowWith","ViewHelpers_mkRow","ViewHelpers_divWith","ViewHelpers_spanWith","ViewHelpers_spaceN","initialize","replicate","ViewHelpers_mkTextWith","ViewHelpers_mkText","ViewHelpers_leftRightColumns","isSmall","WeatherValue_TrendType","WeatherValue_Unit","WeatherValue_Definition","ChartName","Unit","ChartType","ChartColor","GetValue","WeatherValue_WeatherBox","WeatherValue_values","faFan","point","faTornado","point_1","state_2","point_2","point_3","faWind","state_3","point_4","faWater","point_5","faMoon","point_6","state_4","point_7","Graph_Recharts_area_yAxisId","Graph_Recharts_yAxis_tickStyle","Graph_Recharts_composedChart_cursor_pointer","Graph_trendChart","smallAspect","valuesNotEmpty","axisTypes","properties_10","value_65","unitText","fontSize","fontColor","styleAttributes","properties_11","d_1","properties","Int32Array","reactApi_1","CartesianGrid","properties_1","XAxis","properties_3","toString_1","YAxis","properties_4","dx","properties_2","properties_6","iconType","formatter","d_2","properties_9","properties_8","ComposedChart","ResponsiveContainer","svg_transform_rotateCenter","deg","centerX","centerY","svg_height","PortWindDashboardView","innerWidth","innerHeight","viewPort","action_1","memoizations","timeout","timeoutId_1","debounce","Width_1","options_1","addOptions","dependencies_1","removeOptions","useMemo","capture","once","dependencies_1_1","dependencies_1_2","options_1_1","options_2","_arg_1_1","sensor","sId","baseWidth","baseWidthPercent","columns","columnWidth_1","backgroundColor","color_3","w_3","weather_1","lastUpdated_2","lastUpdated_1","borderRadius","borderWidth","borderRight","marginRight","padding","faMapMarkedAlt","value_54","faTh","faChartLine","value_56","dashboardView","x_33","innerContent","iconMargin","mkContentWeatherValue","iconProps","value_60","round_1","value_62","mkContent","props_10","label_1","rowItem","elements_16","elements_15","value_69","key_46","props_11","props_12","map_marker","value_86","value_85","value_80","x_16","value_82","x_18","value_83","x_20","value_84","w_1","ifNone","s_3","v_3","aspect","OnClick","v_4","mergeTransforms","xs_4","x_25","ship_at_quay_2","Flip","display","margin","WholeSvgTransform","SvgTransform","SvgArrow","marginBottom","chunkSize","choose_1","d_3","quayDir","value_123","flipVessel","ship_at_quay_1","arrow","strokeColorCode","directionArrow","w_2","windRot","rot","x_27","moveY","op_UnaryNegation_Int32","sin","opt1","opt2","s_4","chunkBySize_1","marginTop","children_3","children_1","PortWind$002Emodule","PortWindView","w_4","mkBoldText","children_4","lastUpdatedView","weather_3","weather_4","children_2","toArray_2","w_5","collect_1","p_18","SessionStorage_getLoginReturnPage","ofNullable","sessionStorage","getItem","SessionStorage_getItem","LoginStep","AuthState","Auth","changePage","page","PageModule_isLoginPage","SessionStorage_setLoginReturnPage","inLayout","currentPage","logoPath","sws_white_vertical","link","lbl","ic","nextPage","iconObj","isSelected","value_43","props_16","timezone","src","faChartPie","faAnchor","faTemperatureHigh","faCloudRain","hideCloseButton","SidebarMenu","elems_3","overflowX","mainViewInputProps","elements_1","timezoneSettingsFromStorage","input_3","localStorage","timeSpanString","tryParseTimespan","tryGetFromStorage","saveToStorage","attributes","Router_goToUrl","ProgramModule_run","pagesWithIpAccess","cmd_1","signinRedirectCallback","signinSilentCallback","signinRedirect","page_3","pages_3","page_4","page_5","v_2","signoutRedirect","Item_2","page_6","v_9","ofError","lazyView2With","placeholderId","client","getElementById","model_1","react_dom","Program_Internal_withReactSynchronousUsing","Common_lazyView2With"],"sourceRoot":""}