{"version":3,"file":"app-58ca0e49.981ca8458d389c9a476a.bundle.js","mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAOA;AACA;AAEA;AAKA;AAHA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;AC3DA;;AAEA;AACA;;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;AC9DA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAGA;AAAA;AAOA;AAHA;AAAA;AAIA;AACA;;AAGA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACpHA;;AAEA;AACA;;AAEA;AACA;AAGA;AAAA;AAEA;AAAA;AAEA;AAAA;AAEA;AAAA;AATA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AARA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;;;;;;;;;;;;;;;;;;;AChBA;;AAEA;AACA;;AAEA;AACA;AAGA;AAAA;AAEA;AAAA;AAEA;AAAA;AAPA;AAEA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;;;;;;;;;;;;;;;;;;;;;ACdA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AAIA;;AAEA;AACA;AACA;;AAGA;AACA;AAaA;AAVA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACtHA;;AAEA;AACA;;AAEA;AACA;;AAGA;AACA;AAGA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAEA;AAAA;AAVA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;AAAA;AACA;AACA;AAGA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AA7CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;ACpBA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAGA;AACA;AAGA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AArBA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AA1IA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;ACtCA;;AAEA;AACA;;AAEA;AACA;;AAGA;AACA;AAQA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAEA;AAAA;AAEA;AAAA;AAfA;AAEA;AAAA;AACA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AA3BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;;;;;;;;;;;;;;;;;;;;;;;AC3BA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAGA;AACA;AAGA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AApCA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAEA;AACA;;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAGA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAxOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;ACvDA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAGA;AACA;AAGA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAEA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AA1BA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BA;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AApJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;AC5CA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAGA;AACA;AAGA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAzBA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBA;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAxJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;AC1CA;;AAEA;AACA;;AAMA;AACA;;AAGA;AACA;AAGA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AANA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AACA;AAEA;AAIA;AAEA;AAEA;AAKA;AAEA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAvCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;;;;;;;;;;;;;;;;;ACrBA;;AAEA;AACA;;AAEA;AACA;AACA;;AAGA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AClBA;;AAEA;AACA;AACA;;AAMA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AAAA;;AAIA;AACA;AAOA;AAAA;AACA;AAAA;AACA;AAAA;AAKA;AARA;AAAA;AAAA;AAAA;AAKA;AAAA;AAOA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAzDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;ACpCA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AAIA;AAAA;AACA;AAAA;AAGA;AALA;AAAA;AAAA;AAAA;AAMA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAjCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;ACfA;;AAEA;AACA;;AAEA;AACA;AACA;AAIA;;AAKA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAGA;AACA;AAIA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAUA;AAfA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AACA;AACA;AACA;AACA;AAIA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAGA;AAGA;AAGA;AACA;AAEA;AACA;AACA;AAGA;AAGA;AAGA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AAEA;;AAGA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AA1MA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;;;;;;;;;;;;;;;;;;;ACtCA;;AAEA;AACA;;AAGA;AACA;AAGA;AAAA;AACA;AAAA;AAJA;AAEA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;;;;;;;;;;;;;;;;;;;ACZA;;AAEA;AACA;;AAGA;AACA;AAGA;AAAA;AACA;AAAA;AAJA;AAEA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;;;;;;;;;;;;;;;;;;;;;;;ACZA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAGA;AACA;AAIA;AAAA;AAEA;AAAA;AAEA;AAAA;AAEA;AAAA;AAEA;AAAA;AAEA;AAAA;AAEA;AAAA;AAGA;AAhBA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAIA;AAAA;AAAA;AAOA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AArDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;;;;;;;;;;;AClCA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA","sources":["webpack://latinera/./sources/classes/ajv-validator.js","webpack://latinera/./sources/classes/circular-array.js","webpack://latinera/./sources/classes/json-schema-validator.js","webpack://latinera/./sources/components/etc/add-analysis-activity-icon.js","webpack://latinera/./sources/components/etc/add-task-activity-icon.js","webpack://latinera/./sources/components/etc/availability-status.js","webpack://latinera/./sources/components/etc/dialog-title-body-help.js","webpack://latinera/./sources/components/etc/form-checkbox-field.js","webpack://latinera/./sources/components/etc/form-input-field-hint.js","webpack://latinera/./sources/components/etc/form-input-field.js","webpack://latinera/./sources/components/etc/form-radio-button.js","webpack://latinera/./sources/components/etc/form-select-field.js","webpack://latinera/./sources/components/etc/highlighted-text.js","webpack://latinera/./sources/components/etc/loading-placeholder.js","webpack://latinera/./sources/components/etc/locale-dropdown.js","webpack://latinera/./sources/components/etc/locale-item.js","webpack://latinera/./sources/components/etc/long-tonic-accent.js","webpack://latinera/./sources/components/etc/merge-next-card-icon.js","webpack://latinera/./sources/components/etc/merge-previous-card-icon.js","webpack://latinera/./sources/components/etc/modal.js","webpack://latinera/./sources/components/etc/add-analysis-activity-icon.html","webpack://latinera/./sources/components/etc/add-task-activity-icon.html","webpack://latinera/./sources/components/etc/availability-status.html","webpack://latinera/./sources/components/etc/dialog-title-body-help.html","webpack://latinera/./sources/components/etc/form-checkbox-field.html","webpack://latinera/./sources/components/etc/form-input-field-hint.html","webpack://latinera/./sources/components/etc/form-input-field.html","webpack://latinera/./sources/components/etc/form-radio-button.html","webpack://latinera/./sources/components/etc/form-select-field.html","webpack://latinera/./sources/components/etc/highlighted-text.html","webpack://latinera/./sources/components/etc/loading-placeholder.html","webpack://latinera/./sources/components/etc/locale-dropdown.html","webpack://latinera/./sources/components/etc/locale-item.html","webpack://latinera/./sources/components/etc/long-tonic-accent.html","webpack://latinera/./sources/components/etc/merge-next-card-icon.html","webpack://latinera/./sources/components/etc/merge-previous-card-icon.html","webpack://latinera/./sources/components/etc/modal.html"],"sourcesContent":["// Define the \"AjvValidator\" class\n// note: use JSON Schema Draft-07 specification\n\n// Import library modules\nimport Ajv from \"ajv\";\nimport ajvErrors from \"ajv-errors\";\nimport addFormats from \"ajv-formats\";\n\n// Import parameter modules\nimport {\n ajv as defaultAjvParams,\n ajvFormats as defaultAjvFormatsParams,\n ajvErrors as defaultAjvErrorsParams\n} from \"parameters/ajv\";\n\n\n// Export the \"AjvValidator\" class\nexport default class AjvValidator {\n\n constructor(\n schemaData,\n ajvParams = {},\n ajvFormatsParams = {},\n ajvErrorsParams = {}\n ) {\n const finalAjvParams = { ...defaultAjvParams, ...ajvParams };\n const finalAjvFormatsParams = {\n ...defaultAjvFormatsParams,\n ...ajvFormatsParams\n };\n const finalAjvErrorsParams = {\n ...defaultAjvErrorsParams,\n ...ajvErrorsParams\n };\n this.ajv = new Ajv(finalAjvParams);\n addFormats(this.ajv, finalAjvFormatsParams); // enable ajv-formats\n ajvErrors(this.ajv, finalAjvErrorsParams); // enable ajv-errors\n this.validate = this.ajv.compile(schemaData);\n }\n\n // validateSync: sync\n // returns either the successfully validated input value (with\n // defaults), or throws an array of validation errors\n validateSync(value) {\n const valid = this.validate(value);\n if (valid) {\n return value;\n }\n throw this.validate.errors;\n }\n\n // validateAsync: async\n // returns a promise which either resolves with the successfully\n // validated input value (with defaults), or rejects with an array of\n // validation errors\n async validateAsync(value) {\n return this.validateSync(value);\n }\n\n}\n","// Define the CircularArray class\n\n// Import utility modules\nimport { typeOf } from \"utilities/etc\";\n\n// Export the \"CircularArray\" class\nexport default class CircularArray {\n\n constructor(elementsCount, initValue = undefined) {\n if (typeOf(elementsCount) !== \"number\" ||\n !Number.isInteger(elementsCount) ||\n elementsCount <= 0) {\n throw new Error(\"First argument should be a positive integer number\");\n }\n this._elementsCount = elementsCount;\n this._elements = Array\n .apply(null, { length: elementsCount })\n .map(() => initValue);\n this._index = 0;\n }\n\n // element: sync getter\n // returns the current element within the circular array\n get element() {\n return this._elements[this.index];\n }\n\n // element: sync setter\n // sets the current element of the circular array to the specified value\n // and increases the index by one position\n set element(elementValue) {\n this._elements[this.index] = elementValue;\n this.index = this.index + 1;\n }\n\n // index: sync getter\n // returns the current index within the circular array\n get index() {\n return this._index;\n }\n\n // index: sync setter\n // sets the current index (modulo elementsCount) within the circular\n // array\n set index(newIndex) {\n this._index = newIndex % this._elementsCount;\n }\n\n // elements: sync getter\n // returns the circular array's elements\n get elements() {\n return this._elements;\n }\n\n // elements: sync setter\n // sets the circular array elements to the specified values\n set elements(elementsValues) {\n elementsValues.forEach(elementValue => {\n this.element = elementValue;\n });\n }\n\n}\n","// Define a custom validator class based on json-schema\n\n// Import library modules\nimport { inject } from \"aurelia-framework\";\nimport { ValidateResult } from \"aurelia-validation\";\n\n// Import utility modules\nimport { typeOf } from \"utilities/etc\";\nimport { unsetProperties } from \"utilities/object\";\n\n// Import service modules\nimport ValidationService from \"services/validation\";\n\n\n// Export the \"JSONSchemaValidator\" class\n@inject(ValidationService)\nexport default class JSONSchemaValidator {\n\n // Attributes\n validatorsMap = new Map();\n\n constructor(validationService) {\n this.validationService = validationService;\n }\n\n\n // Core methods\n async validateObject(object) {\n const errorsData = await this.computeErrorsData(object);\n return errorsData\n .map(errorData => {\n const [ errorPropertyPath, errorKey, errorParamsString = \"{}\" ] =\n this.splitErrorMessage(errorData.message);\n const errorPropertyName = errorPropertyPath.split(\".\").pop();\n return new ValidateResult(errorKey, object, errorPropertyName,\n false, errorParamsString);\n });\n }\n\n async validateProperty(object, propertyName) {\n const errorsData = await this.computeErrorsData(object);\n return errorsData\n .map(errorData => {\n const [ errorPropertyPath, errorKey, errorParamsString = \"{}\" ] =\n this.splitErrorMessage(errorData.message);\n const errorPropertyName = errorPropertyPath.split(\".\").pop();\n return { errorPropertyName, errorKey, errorParamsString };\n })\n .filter(({ errorPropertyName }) => {\n const rawErrorPropertyName = errorPropertyName\n .replace(/\\[.*\\]/g, \"\");\n return rawErrorPropertyName === propertyName;\n })\n .map(({ errorPropertyName, errorKey, errorParamsString }) => {\n return new ValidateResult(errorKey, object, errorPropertyName,\n false, errorParamsString);\n });\n }\n\n // computeErrorsData: async\n // returns an array of error objects obtained by validating the\n // specified object agains the schema whose metadata are contained in\n // the object itself\n async computeErrorsData(object) {\n const { entityName, schemaName } = this.getSchemaMetadata(object);\n const validatorKey = `${entityName}/${schemaName}`;\n let validator = this.validatorsMap.get(validatorKey);\n if (!validator) {\n try {\n validator = await this.validationService\n .getValidator(entityName, schemaName);\n } catch(error) {\n console.error(error);\n throw new Error(`Error getting validator for ${entityName}/` +\n `${schemaName} from service`);\n }\n this.validatorsMap.set(validatorKey, validator);\n }\n object = this.purgeSchemaMetadata(object);\n try {\n await validator.validateAsync(object);\n } catch(errorsData) {\n return errorsData;\n }\n return [];\n }\n\n // getSchemaMetadata: sync\n // returns an object containing the entityName and schemaName metadata\n // extracted from the specified object\n getSchemaMetadata(object) {\n const [ entityName, schemaName ] = object._schemaId.split(\".\");\n if (!entityName || typeOf(entityName) !== \"string\") {\n throw new Error(\"_entityName property should be a non-empty string\");\n } else if (!schemaName || typeOf(schemaName) !== \"string\") {\n throw new Error(\"_schemaName property should be a non-empty string\");\n }\n return { entityName, schemaName };\n }\n\n // purgeSchemaMetadata: sync\n // returns the specified object after removing the entityName and\n // schemaName metadata properties\n purgeSchemaMetadata(object) {\n return unsetProperties(object, [\"_schemaId\"]);\n }\n\n // splitErrorMessage: sync\n // returns the specified error message string split at the first two\n // pipe (\"|\") characters\n splitErrorMessage(errorMessage) {\n const [ string1, string2, ...restStrings ] = errorMessage.split(\"|\");\n const string3 = restStrings.join(\"|\");\n return [ string1, string2, string3 ];\n }\n\n}\n","// Define the view-model for the \"add-analysis-activity-icon\" component\n\n// Import library modules\nimport { bindable, bindingMode } from \"aurelia-framework\";\n\n// Export AddAnalysisActivityIcon class\nexport class AddAnalysisActivityIcon {\n\n // Attributes\n @bindable({ defaultBindingMode: bindingMode.toView })\n mainIconSize = \"1.0em\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n plusIconSize = \"0.6em\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n plusTopPosition = \"-1.2em\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n plusLeftPosition = \"-0.3em\";\n\n}\n","// Define the view-model for the \"add-task-activity-icon\" component\n\n// Import library modules\nimport { bindable, bindingMode } from \"aurelia-framework\";\n\n// Export AddTaskActivityIcon class\nexport class AddTaskActivityIcon {\n\n // Attributes\n @bindable({ defaultBindingMode: bindingMode.toView })\n plusIconSize = \"0.6em\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n plusTopPosition = \"-1.2em\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n plusLeftPosition = \"-0.3em\";\n\n}\n","// Define the view-model for the \"availability-status\" element\n\n// Import library modules\nimport { inject } from \"aurelia-framework\";\n\n// Import utility modules\nimport { pause } from \"utilities/promise\";\n\n// Import parameter modules\nimport { \n autohideAvailabilityStatusAlertAfterMs,\n mockUpdateAvailabilityStatusDurationMs\n} from \"parameters/time\";\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n\n// Import service modules\nimport APIService from \"services/api\";\nimport PayService from \"services/pay\";\n\n\n// Export AvailabilityStatus class\n@inject(APIService, PayService)\nexport class AvailabilityStatus {\n\n // Attributes\n isOnline = true;\n isApiServiceAvailable = true;\n isPayServiceAvailable = true;\n availabilityLevel = \"full\";\n previousAvailabilityLevel = this.availabilityLevel;\n isUpdatingAvailabilityStatus = false;\n showAvailabilityStatusAlert = false;\n i18nParams = i18nParams;\n\n constructor(apiService, payService) {\n this.apiService = apiService;\n this.payService = payService;\n }\n\n\n // Lifecycle methods\n async bind() {\n await this.updateAvailabilityStatusAlert();\n window.addEventListener(\"online\", async() => {\n await this.updateAvailabilityStatusAlert();\n });\n window.addEventListener(\"offline\", async() => {\n await this.updateAvailabilityStatusAlert();\n });\n }\n\n unbind() {\n window.removeEventListener(\"online\", async() => {\n await this.updateAvailabilityStatusAlert();\n });\n window.removeEventListener(\"offline\", async() => {\n await this.updateAvailabilityStatusAlert();\n });\n }\n\n\n // Core methods\n async updateAvailabilityStatusAlert() {\n this.isUpdatingAvailabilityStatus = true;\n await this.updateAvailabilityLevel();\n if (this.availabilityLevel !== this.previousAvailabilityLevel) {\n this.showAvailabilityStatusAlert = true;\n switch (this.availabilityLevel) {\n case \"full\":\n console.info(\"The application is fully available\");\n await pause(autohideAvailabilityStatusAlertAfterMs);\n this.showAvailabilityStatusAlert = false;\n break;\n case \"partial\":\n console.warn(\"The application is partially unavailable\");\n break;\n case \"none\":\n console.error(\"The application is unavailable\");\n }\n } else {\n this.showAvailabilityStatusAlert = \n [\"partial\", \"none\"].includes(this.availabilityLevel);\n }\n await pause(mockUpdateAvailabilityStatusDurationMs);\n this.isUpdatingAvailabilityStatus = false;\n }\n\n async updateAvailabilityLevel() {\n this.updateOnlineStatus();\n this.previousAvailabilityLevel = this.availabilityLevel;\n if (this.isOnline) {\n try {\n [ \n this.isApiServiceAvailable,\n this.isPayServiceAvailable\n ] = await Promise.all([\n this.apiService.isAlive(),\n this.payService.isAlive()\n ]);\n if (this.isApiServiceAvailable && this.isPayServiceAvailable) {\n this.availabilityLevel = \"full\";\n } else if (!this.isApiServiceAvailable && !this.isPayServiceAvailable) {\n this.availabilityLevel = \"none\";\n } else {\n this.availabilityLevel = \"partial\";\n }\n } catch(error) {\n this.availabilityLevel = \"none\";\n }\n } else {\n this.availabilityLevel = \"none\";\n }\n }\n\n updateOnlineStatus() {\n this.isOnline = window.navigator.onLine;\n }\n\n}\n","// Define the view-model for the \"dialog-title-body-help\" component\n\n// Import library modules\nimport { bindable, bindingMode, computedFrom } from \"aurelia-framework\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n\n\n// Export DialogTitleBodyHelp class\nexport class DialogTitleBodyHelp {\n\n // Bound attributes\n @bindable({ defaultBindingMode: bindingMode.toView }) titleI18nKey = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) bodyI18nKey = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) helpI18nKey = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n bodyI18nParams = i18nParams;\n @bindable({ defaultBindingMode: bindingMode.toView })\n helpI18nParams = i18nParams;\n @bindable({ defaultBindingMode: bindingMode.toView }) dialogController = null;\n\n // Local attributes\n i18nParams = i18nParams;\n helpVisible = false;\n\n\n // Getter and setter methods\n @computedFrom(\"titleI18nKey\")\n get titleHtmlI18nKey() {\n return this.titleI18nKey ? `[html]${this.titleI18nKey}` : \"\";\n }\n\n @computedFrom(\"bodyI18nKey\")\n get bodyHtmlI18nKey() {\n return this.bodyI18nKey ? `[html]${this.bodyI18nKey}` : \"\";\n }\n\n @computedFrom(\"helpI18nKey\")\n get helpHtmlI18nKey() {\n return this.helpI18nKey ? `[html]${this.helpI18nKey}` : \"\";\n }\n\n\n // Core methods\n toggleHelpVisibility() {\n this.helpVisible = !this.helpVisible;\n }\n \n closeDialog() {\n if (this.dialogController) {\n console.info(\"Closing dialog\");\n this.dialogController.close();\n } else {\n console.warn(\"Could not close dialog: missing dialog controller\");\n }\n }\n\n}\n","// Define the view-model for a generic \"form-checkbox-field\" element\n\n// Import library modules\nimport { bindable, bindingMode } from \"aurelia-framework\";\n\n// Import utility modules\nimport { unsetEventHandlers } from \"utilities/event\";\nimport { typeOf } from \"utilities/etc\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n\n// Define internal parameters\nconst autofocusTimeoutMs = 10;\n\n\n// Export the \"FormCheckboxField\" class\nexport class FormCheckboxField {\n\n // Bound attributes\n @bindable({ defaultBindingMode: bindingMode.toView }) label = \"\";\n @bindable({ defaultBindingMode: bindingMode.twoWay }) value = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) propertyName = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) uniqueId = \"\";\n @bindable({ defaultBindingMode: bindingMode.fromView }) inputElement = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) onFocus = () => {};\n @bindable({ defaultBindingMode: bindingMode.toView }) onChange = () => {};\n @bindable({ defaultBindingMode: bindingMode.toView }) onBlur = () => {};\n @bindable({ defaultBindingMode: bindingMode.toView }) eventService = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) publishedEvents = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) subscribedEvents = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) divClasses = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n inputClasses = \"uk-checkbox\";\n @bindable({ defaultBindingMode: bindingMode.toView }) autofocus = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) scrollIntoView = true;\n @bindable({ defaultBindingMode: bindingMode.toView }) required = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) recommended = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) disabled = false;\n\n // Local attributes\n i18nParams = i18nParams;\n eventsSubscriptions = [];\n hasFocus = false;\n\n\n // Lifecycle methods\n bind() {\n this.oldValue = this.value;\n if (this.eventService && !this.uniqueId) {\n throw new Error(`Missing required attribute \"uniqueId\"`);\n } else if (this.onChange && typeOf(this.onChange) !== \"function\") {\n throw new Error(`Attribute \"onChange\" should be a callback function`);\n }\n this.publishedEventNames = this.publishedEvents.split(\",\");\n this.subscribedEventNames = this.subscribedEvents.split(\",\");\n if (this.eventService && this.subscribedEventNames.includes(\"setValue\")) {\n this.eventsSubscriptions = [\n this.eventService.subscribe({\n eventName: \"setValue\",\n eventHandler: this.handleSetValueEvent.bind(this),\n eventFilter: this.filterEventsByUniqueId.bind(this)\n })\n ];\n }\n }\n\n attached() {\n if (this.inputElement && this.autofocus) {\n setTimeout(() => {\n this.inputElement.focus({ preventScroll: false });\n this.hasFocus = true;\n }, autofocusTimeoutMs);\n }\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Event filters\n filterEventsByUniqueId({ uniqueId = \"\" }) {\n return uniqueId === this.uniqueId;\n }\n\n\n // Event handlers\n async handleFocusEvent(eventData) {\n this.hasFocus = true;\n if (this.inputElement && this.scrollIntoView) {\n this.inputElement.scrollIntoView();\n }\n this.oldValue = this.value;\n if (this.onFocus) {\n return this.onFocus({\n propertyName: this.propertyName,\n uniqueId: this.uniqueId,\n value: this.value,\n eventData\n });\n }\n }\n\n async handleChangeEvent(eventData) {\n const { oldValue: originalOldValue } = this;\n if (this.value !== this.oldValue) {\n this.oldValue = this.value;\n if (this.eventService && this.publishedEventNames.includes(\"change\")) {\n this.eventService.publish({\n eventName: `${this.uniqueId}Changed`,\n eventData: {\n uniqueId: this.uniqueId,\n oldValue: originalOldValue,\n newValue: this.value,\n eventData\n }\n });\n }\n if (this.onChange) {\n return this.onChange({\n uniqueId: this.uniqueId,\n oldValue: originalOldValue,\n newValue: this.value,\n eventData\n });\n }\n }\n }\n\n async handleBlurEvent(eventData) {\n this.hasFocus = false;\n if (this.value === \"\" && !this.required) {\n this.value = undefined;\n }\n if (this.value || this.required) {\n if (this.validator && this.validatedEventNames.includes(\"blur\")) {\n await this.validateValue();\n }\n }\n if (this.onBlur) {\n return this.onBlur({\n propertyName: this.propertyName,\n uniqueId: this.uniqueId,\n value: this.value,\n eventData\n });\n }\n }\n\n handleSetValueEvent({ newValue = null }) {\n if (typeOf(newValue) === \"string\") {\n this.value = newValue;\n }\n }\n\n}\n","// Define the view-model for the \"form-input-field-hint\" component\n\n// Import library modules\nimport { bindable, bindingMode, inject } from \"aurelia-framework\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n\n\n// Export the \"FormInputFieldHint\" class\n@inject()\nexport class FormInputFieldHint {\n\n // Local attributes\n showHelp = false;\n i18nParams = i18nParams;\n\n // Bound attributes\n @bindable({ defaultBindingMode: bindingMode.toView }) mainI18nKey = \"\"; \n @bindable({ defaultBindingMode: bindingMode.toView }) helpI18nKey = \"\"; \n @bindable({ defaultBindingMode: bindingMode.toView }) divClasses =\n \"uk-alert uk-alert-warning uk-margin-remove\";\n @bindable({ defaultBindingMode: bindingMode.toView }) mainDivClasses =\n \"uk-text uk-text-small\";\n @bindable({ defaultBindingMode: bindingMode.toView }) anchorDivClasses =\n \"uk-text uk-text-small uk-text-left\";\n @bindable({ defaultBindingMode: bindingMode.toView }) helpDivClasses =\n \"uk-text uk-text-small\";\n\n\n // Lifecycle methods\n bind() {\n if (!this.mainI18nKey) {\n throw new Error(`Missing required attribute \"mainI18nKey\"`);\n } else if (!this.helpI18nKey) {\n throw new Error(`Missing required attribute \"helpI18nKey\"`);\n }\n }\n\n\n // Core methods\n toggleShowHelp() {\n this.showHelp = !this.showHelp;\n }\n\n}\n","// Define the view-model for a generic \"form-input-field\" element\n\n// Import library modules\nimport { bindable, bindingMode } from \"aurelia-framework\";\n\n// Import utility modules\nimport { setEventHandlers, unsetEventHandlers } from \"utilities/event\";\nimport { capitalizeFirst } from \"utilities/string\";\nimport { typeOf } from \"utilities/etc\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n\n// Define internal parameters\nconst supportedEventNames = [\"setValue\", \"validateValue\"];\nconst autofocusTimeoutMs = 10;\n\n\n// Export the \"FormInputField\" class\nexport class FormInputField {\n\n // Bound attributes\n @bindable({ defaultBindingMode: bindingMode.toView }) type = \"text\";\n @bindable({ defaultBindingMode: bindingMode.toView }) data = null;\n @bindable({ defaultBindingMode: bindingMode.twoWay }) value = \"\";\n @bindable({ defaultBindingMode: bindingMode.twoWay }) isValid = true;\n @bindable({ defaultBindingMode: bindingMode.toView }) propertyName = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) uniqueId = \"\";\n @bindable({ defaultBindingMode: bindingMode.fromView }) inputElement = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) onFocus = () => {};\n @bindable({ defaultBindingMode: bindingMode.toView }) onInput = () => {};\n @bindable({ defaultBindingMode: bindingMode.toView }) onBlur = () => {};\n @bindable({ defaultBindingMode: bindingMode.toView }) validator = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) validatedEvents = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) showDanger = true;\n @bindable({ defaultBindingMode: bindingMode.toView }) eventService = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) publishedEvents = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) subscribedEvents = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) label = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) placeholder = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n titleI18nKey = \"main:theField\";\n @bindable({ defaultBindingMode: bindingMode.toView }) fieldnameI18nKey = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) divClasses = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n labelClasses = \"uk-form-label\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n inputClasses = \"uk-input\";\n @bindable({ defaultBindingMode: bindingMode.toView }) autofocus = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) autocorrect = \"off\";\n @bindable({ defaultBindingMode: bindingMode.toView }) autocapitalize = \"off\";\n @bindable({ defaultBindingMode: bindingMode.toView }) scrollIntoView = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) spellcheck = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) required = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) recommended = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) disabled = false;\n\n // Local attributes\n oldValue = this.value;\n errorsData = [];\n i18nParams = i18nParams;\n eventsSubscriptions = [];\n hasFocus = false;\n\n\n // Lifecycle methods\n bind() {\n if (this.eventService && !this.uniqueId) {\n throw new Error(`Missing required attribute \"uniqueId\"`);\n } else if (this.validator && !this.propertyName) {\n throw new Error(`Missing required attribute \"propertyName\"`);\n } else if (this.onFocus && typeOf(this.onFocus) !== \"function\") {\n throw new Error(`Attribute \"onFocus\" should be a callback function`);\n } else if (this.onBlur && typeOf(this.onBlur) !== \"function\") {\n throw new Error(`Attribute \"onBlur\" should be a callback function`);\n } else if (this.onInput && typeOf(this.onInput) !== \"function\") {\n throw new Error(`Attribute \"onInput\" should be a callback function`);\n } else if (!this.data) {\n throw new Error(`Missing required attribute \"data\"` +\n `for property \"${this.propertyName}\"`);\n }\n this.validatedEventNames = this.validatedEvents.split(\",\");\n this.publishedEventNames = this.publishedEvents.split(\",\");\n this.subscribedEventNames = this.subscribedEvents.split(\",\");\n if (this.subscribedEventNames.length > 0 && this.eventService) {\n const eventsData = this.subscribedEventNames\n .filter(eventName => supportedEventNames.includes(eventName))\n .map(subscribedEventName => ({\n name: subscribedEventName,\n filterBy: \"uniqueId\"\n }));\n const componentName = this.propertyName || this.uniqueId || \"???\";\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: `formInputField-${componentName}`,\n eventService: this.eventService,\n eventsData\n });\n }\n this.fieldnameI18nKey = this.fieldnameI18nKey || `main:${this.propertyName}`;\n }\n\n attached() {\n if (!this.label) {\n console.warn(`Missing optional attribute \"label\" ` +\n `for property \"${this.propertyName}\"`);\n }\n if (!this.placeholder) {\n console.warn(`Missing optional attribute \"placeholder\"` +\n `for property \"${this.propertyName}\"`);\n }\n if (this.inputElement) {\n this.inputElement\n .setAttribute(\"spellcheck\", this.spellcheck ? \"true\" : \"false\");\n if (this.autofocus) {\n setTimeout(() => {\n this.inputElement.focus({ preventScroll: false });\n this.hasFocus = true;\n }, autofocusTimeoutMs);\n }\n }\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Core methods\n async validateValue() {\n const errorsData = \n await this.validator.validateProperty(this.data, this.propertyName);\n this.errorsData = errorsData\n .map(errorData => ({ error: errorData }));\n this.isValid = this.errorsData.length === 0;\n\n this.publishValueValidatedEvent();\n }\n\n\n // Event filters\n filterEventByUniqueId({ uniqueId = \"\" }) {\n return uniqueId === this.uniqueId;\n }\n\n\n // Event handlers\n async handleFocusEvent(eventData) {\n this.hasFocus = true;\n if (this.inputElement && this.scrollIntoView) {\n this.inputElement.scrollIntoView();\n }\n if (this.validator && this.validatedEventNames.includes(\"focus\")) {\n await this.validateValue();\n }\n this.oldValue = this.value;\n if (this.onFocus) {\n return this.onFocus({\n propertyName: this.propertyName,\n uniqueId: this.uniqueId,\n value: this.value,\n data: this.data,\n eventData\n });\n }\n }\n\n async handleInputEvent(eventData) {\n if (this.value === \"\" && !this.required) {\n this.value = undefined;\n }\n if (this.value && [ \"on\", \"sentences\" ].includes(this.autocapitalize)) {\n this.value = capitalizeFirst(this.value);\n }\n if (this.value || this.required) {\n if (this.validator && this.validatedEventNames.includes(\"input\")) {\n await this.validateValue();\n }\n }\n const { oldValue: originalOldValue } = this;\n if (this.value !== this.oldValue) {\n this.oldValue = this.value;\n if (this.eventService && this.publishedEventNames.includes(\"change\")) {\n this.eventService.publish({\n eventName: `${this.uniqueId}Changed`,\n eventData: {\n uniqueId: this.uniqueId,\n oldValue: originalOldValue,\n newValue: this.value,\n eventData\n }\n });\n }\n }\n if (this.onInput) {\n return this.onInput({\n uniqueId: this.uniqueId,\n oldValue: originalOldValue,\n newValue: this.value,\n eventData\n });\n }\n }\n\n async handleBlurEvent(eventData) {\n this.hasFocus = false;\n if (this.value === \"\" && !this.required) {\n this.value = undefined;\n }\n if ((this.value || this.required)) {\n if (this.validator && this.validatedEventNames.includes(\"blur\")) {\n await this.validateValue();\n }\n }\n if (this.onBlur) {\n return this.onBlur({\n propertyName: this.propertyName,\n uniqueId: this.uniqueId,\n value: this.value,\n data: this.data,\n eventData\n });\n }\n }\n\n handleSetValueEvent({ newValue = \"\" }) {\n if (typeOf(newValue) === \"string\") {\n this.value = newValue;\n }\n }\n\n async handleValidateValueEvent() {\n await this.validateValue();\n }\n\n\n // Event publishers\n publishValueValidatedEvent(eventData) {\n if (\n this.eventService && \n this.publishedEventNames.includes(\"valueValidated\")\n ) {\n this.eventService.publish({\n eventName: \"valueValidated\",\n eventData: {\n ...(eventData || {}),\n uniqueId: this.uniqueId,\n isValid: this.isValid\n }\n })\n }\n }\n\n}\n","// Define the view-model for a generic \"form-radio-button\" element\n\n// Import library modules\nimport { bindable, bindingMode } from \"aurelia-framework\";\n\n// Import utility modules\nimport { unsetEventHandlers } from \"utilities/event\";\nimport { typeOf } from \"utilities/etc\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n\n// Define internal parameters\nconst allowedOptionsDisplayModes = [ \"inline\", \"block\" ];\nconst autofocusTimeoutMs = 10;\n\n\n// Export the \"FormRadioButton\" class\nexport class FormRadioButton {\n\n // Bound attributes\n @bindable({ defaultBindingMode: bindingMode.toView }) label = \"\";\n @bindable({ defaultBindingMode: bindingMode.twoWay }) value = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) optionsData = [];\n @bindable({ defaultBindingMode: bindingMode.toView }) propertyName = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) uniqueId = \"\";\n @bindable({ defaultBindingMode: bindingMode.fromView }) radioElement = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) onFocus = () => {};\n @bindable({ defaultBindingMode: bindingMode.toView }) onSelect = () => {};\n @bindable({ defaultBindingMode: bindingMode.toView }) onBlur = () => {};\n @bindable({ defaultBindingMode: bindingMode.toView }) eventService = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) publishedEvents = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) subscribedEvents = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) divClasses = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n labelClasses = \"uk-form-label\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n radioClasses = \"uk-radio\";\n @bindable({ defaultBindingMode: bindingMode.toView }) \n optionsDisplayMode = \"inline\";\n @bindable({ defaultBindingMode: bindingMode.toView }) autofocus = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) scrollIntoView = true;\n @bindable({ defaultBindingMode: bindingMode.toView }) required = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) recommended = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) disabled = false;\n\n // Local attributes\n oldValue = this.value;\n i18nParams = i18nParams;\n eventsSubscriptions = [];\n hasFocus = false;\n\n\n // Lifecycle methods\n bind() {\n if (this.eventService && !this.uniqueId) {\n throw new Error(`Missing required attribute \"uniqueId\"`);\n } else if (this.onSelect && typeOf(this.onSelect) !== \"function\") {\n throw new Error(`Attribute \"onSelect\" should be a callback function`);\n } else if (!allowedOptionsDisplayModes.includes(this.optionsDisplayMode)) {\n throw new Error(`Attribute \"optionsDisplayMode\" should be one of ` +\n `[${allowedOptionsDisplayModes}]`);\n }\n this.publishedEventNames = this.publishedEvents.split(\",\");\n this.subscribedEventNames = this.subscribedEvents.split(\",\");\n if (this.eventService && this.subscribedEventNames.includes(\"setValue\")) {\n this.eventsSubscriptions = [\n this.eventService.subscribe({\n eventName: \"setValue\",\n eventHandler: this.handleSetValueEvent.bind(this),\n eventFilter: this.filterEventsByUniqueId.bind(this)\n })\n ];\n }\n }\n\n attached() {\n if (!this.label) {\n console.warn(`Missing optional attribute \"label\" ` +\n `for property \"${this.propertyName}\"`);\n }\n if (this.optionsData.length === 0) {\n console.warn(`Empty array attribute \"optionsData\" ` +\n `for property \"${this.propertyName}\"`);\n }\n if (this.radioElement && this.autofocus) {\n setTimeout(() => {\n this.radioElement.focus({ preventScroll: false });\n this.hasFocus = true;\n }, autofocusTimeoutMs);\n }\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Event filters\n filterEventsByUniqueId({ uniqueId = \"\" }) {\n return uniqueId === this.uniqueId;\n }\n\n\n // Event handlers\n async handleFocusEvent(eventData) {\n this.hasFocus = true;\n if (this.radioElement && this.scrollIntoView) {\n this.radioElement.scrollIntoView();\n }\n this.oldValue = this.value;\n if (this.onFocus) {\n return this.onFocus({\n propertyName: this.propertyName,\n uniqueId: this.uniqueId,\n value: this.value,\n eventData\n });\n }\n }\n\n // Event handlers\n handleOptionSelectedEvent(eventData) {\n const { oldValue: originalOldValue } = this;\n if (this.value !== this.oldValue) {\n this.oldValue = this.value;\n if (this.eventService && this.publishedEventNames.includes(\"change\")) {\n this.eventService.publish({\n eventName: `${this.uniqueId}Changed`,\n eventData: {\n uniqueId: this.uniqueId,\n oldValue: originalOldValue,\n newValue: this.value,\n eventData\n }\n });\n }\n }\n if (this.onSelect) {\n return this.onSelect({\n uniqueId: this.uniqueId,\n oldValue: originalOldValue,\n newValue: this.value,\n eventData\n });\n }\n }\n\n async handleBlurEvent(eventData) {\n this.hasFocus = false;\n if (this.value === \"\" && !this.required) {\n this.value = undefined;\n }\n if (this.onBlur) {\n return this.onBlur({\n propertyName: this.propertyName,\n uniqueId: this.uniqueId,\n value: this.value,\n eventData\n });\n }\n }\n\n handleSetValueEvent({ newValue = null }) {\n this.value = newValue;\n }\n\n}\n","// Define the view-model for a generic \"form-select-field\" element\n\n// Import library modules\nimport { bindable, bindingMode } from \"aurelia-framework\";\n\n// Import utility modules\nimport { unsetEventHandlers } from \"utilities/event\";\nimport { typeOf } from \"utilities/etc\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n\n// Define internal parameters\nconst autofocusTimeoutMs = 10;\n\n\n// Export the \"FormSelectField\" class\nexport class FormSelectField {\n\n // Bound attributes\n @bindable({ defaultBindingMode: bindingMode.toView }) label = \"\";\n @bindable({ defaultBindingMode: bindingMode.twoWay }) value = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) optionsData = [];\n @bindable({ defaultBindingMode: bindingMode.toView }) propertyName = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) uniqueId = \"\";\n @bindable({ defaultBindingMode: bindingMode.fromView }) selectElement = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) onFocus = () => {};\n @bindable({ defaultBindingMode: bindingMode.toView }) onSelect = () => {};\n @bindable({ defaultBindingMode: bindingMode.toView }) onBlur = () => {};\n @bindable({ defaultBindingMode: bindingMode.toView }) eventService = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) publishedEvents = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) subscribedEvents = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) divClasses = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n labelClasses = \"uk-form-label\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n selectClasses = \"uk-select\";\n @bindable({ defaultBindingMode: bindingMode.toView }) autocomplete = \"off\";\n @bindable({ defaultBindingMode: bindingMode.toView }) autofocus = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) scrollIntoView = true;\n @bindable({ defaultBindingMode: bindingMode.toView }) required = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) recommended = false;\n @bindable({ defaultBindingMode: bindingMode.toView }) disabled = false;\n\n // Local attributes\n oldValue = this.value;\n i18nParams = i18nParams;\n eventsSubscriptions = [];\n hasFocus = false;\n\n\n // Lifecycle methods\n bind() {\n if (this.eventService && !this.uniqueId) {\n throw new Error(`Missing required attribute \"uniqueId\"`);\n } else if (this.onSelect && typeOf(this.onSelect) !== \"function\") {\n throw new Error(`Attribute \"onSelect\" should be a callback function`);\n }\n this.publishedEventNames = this.publishedEvents.split(\",\");\n this.subscribedEventNames = this.subscribedEvents.split(\",\");\n if (this.eventService && this.subscribedEventNames.includes(\"setValue\")) {\n this.eventsSubscriptions = [\n this.eventService.subscribe({\n eventName: \"setValue\",\n eventHandler: this.handleSetValueEvent.bind(this),\n eventFilter: this.filterEventsByUniqueId.bind(this)\n })\n ];\n }\n }\n\n attached() {\n if (!this.label) {\n console.warn(`Missing optional attribute \"label\" ` +\n `for property \"${this.propertyName}\"`);\n }\n if (this.optionsData.length === 0) {\n console.warn(`Empty array attribute \"optionsData\" ` +\n `for property \"${this.propertyName}\"`);\n }\n if (this.selectElement && this.autofocus) {\n setTimeout(() => {\n this.selectElement.focus({ preventScroll: false });\n this.hasFocus = true;\n }, autofocusTimeoutMs);\n }\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Core methods\n matcher(a, b) {\n return JSON.stringify(a) === JSON.stringify(b);\n }\n\n\n // Event filters\n filterEventsByUniqueId({ uniqueId = \"\" }) {\n return uniqueId === this.uniqueId;\n }\n\n\n // Event handlers\n async handleFocusEvent(eventData) {\n this.hasFocus = true;\n if (this.selectElement && this.scrollIntoView) {\n this.selectElement.scrollIntoView();\n }\n this.oldValue = this.value;\n if (this.onFocus) {\n return this.onFocus({\n propertyName: this.propertyName,\n uniqueId: this.uniqueId,\n value: this.value,\n eventData\n });\n }\n }\n\n // Event handlers\n handleOptionSelectedEvent(eventData) {\n const { oldValue: originalOldValue } = this;\n if (this.value !== this.oldValue) {\n this.oldValue = this.value;\n if (this.eventService && this.publishedEventNames.includes(\"change\")) {\n this.eventService.publish({\n eventName: `${this.uniqueId}Changed`,\n eventData: {\n uniqueId: this.uniqueId,\n oldValue: originalOldValue,\n newValue: this.value,\n eventData\n }\n });\n }\n }\n if (this.onSelect) {\n return this.onSelect({\n uniqueId: this.uniqueId,\n oldValue: originalOldValue,\n newValue: this.value,\n eventData\n });\n }\n }\n\n async handleBlurEvent(eventData) {\n this.hasFocus = false;\n if (this.value === \"\" && !this.required) {\n this.value = undefined;\n }\n if (this.onBlur) {\n return this.onBlur({\n propertyName: this.propertyName,\n uniqueId: this.uniqueId,\n value: this.value,\n eventData\n });\n }\n }\n\n handleSetValueEvent({ newValue = null }) {\n if (typeOf(newValue) === \"string\") {\n this.value = newValue;\n }\n }\n\n}\n","// Define the view-model for the \"highlighted-text\" element\n\n// Import library modules\nimport { \n bindable, \n bindingMode,\n computedFrom\n} from \"aurelia-framework\";\n\n// Import utility modules\nimport { highlight } from \"utilities/string\";\n\n\n// Export the \"HighlightedText\" class\nexport class HighlightedText {\n\n // Bound attributes\n @bindable({ defaultBindingMode: bindingMode.toView }) text = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) highlightText = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) highlightTags = \"strong\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n spanClasses = \"uk-text uk-text-break\";\n\n\n // Getter and setter methods\n @computedFrom(\"highlightTags\") \n get openingHighlightMarkup() {\n return this.highlightTags\n .split(\",\")\n .map(tag => `<${tag}>`)\n .join(\"\");\n }\n\n @computedFrom(\"highlightTags\") \n get closingHighlightMarkup() {\n return this.highlightTags\n .split(\",\")\n .reverse()\n .map(tag => `${tag}>`)\n .join(\"\");\n }\n\n @computedFrom(\n \"highlightText\", \n \"openingHighlightMarkup\", \n \"closingHighlightMarkup\"\n )\n get highlightedText() {\n return highlight({\n text: this.text,\n highlightText: this.highlightText,\n openingHighlightMarkup: this.openingHighlightMarkup,\n closingHighlightMarkup: this.closingHighlightMarkup\n });\n }\n\n}\n","// Define the view-model for the \"loading-data\" component\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n\n// Import image modules\nimport latineraIcon from \"images/logos/latinera/latinera-icon.svg\";\nimport latineraText from \"images/logos/latinera/latinera-text.svg\";\n\n\n// Export LoadingPlaceholder class\nexport class LoadingPlaceholder {\n\n // Attributes\n i18nParams = i18nParams;\n latineraIcon = latineraIcon;\n latineraText = latineraText;\n\n}\n","// Define the view-model for the locale-dropdown component\n\n// Import library modules\nimport UIkit from \"uikit\";\nimport {\n inject,\n bindable,\n bindingMode\n} from \"aurelia-framework\";\n\n// Import utility modules\nimport { setEventHandlers, unsetEventHandlers } from \"utilities/event\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n\n// Import service modules\nimport EventService from \"services/event\";\nimport UserService from \"services/user\";\n\n// Define internal parameters\nconst eventsData = [\n { name: \"sessionClosing\" }\n];\n\n\n// Export LocaleDropdown class\n@inject(\n EventService,\n UserService\n)\nexport class LocaleDropdown {\n\n // Bound attributes\n @bindable({ defaultBindingMode: bindingMode.twoWay }) activeLocaleData = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) itemSpanClasses = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView }) localesData = [];\n \n // Local attributes\n i18nParams = i18nParams;\n\n constructor(\n eventService,\n userService\n ) {\n this.eventService = eventService;\n this.userService = userService;\n }\n\n\n // Lifecycle methods\n bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"localeDropdown\",\n eventService: this.eventService,\n eventsData\n });\n\n if (this.localesData.length === 1) {\n [this.activeLocaleData] = this.localesData;\n }\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Core methods\n async setActiveLocale(localeData) {\n this.closeLocaleDropdown();\n this.activeLocaleData = localeData;\n const { code: uiLocaleCode } = localeData;\n await this.userService.setUILocaleCode(uiLocaleCode);\n this.userService.conditionallyExtendSession(); // do not await\n }\n\n closeLocaleDropdown() {\n if (this.localeDropdownElement) {\n UIkit.dropdown(this.localeDropdownElement).hide();\n }\n }\n\n\n // Event handlers\n handleSessionClosingEvent() {\n this.closeLocaleDropdown();\n }\n\n}\n","// Define the view-model for the \"locale-item\" component\n\n// Import library modules\nimport { inject, bindable, bindingMode, computedFrom } from \"aurelia-framework\";\nimport { I18N } from \"aurelia-i18n\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n\n// Export LocaleItem class\n@inject(I18N)\nexport class LocaleItem {\n\n // Attributes\n @bindable({ defaultBindingMode: bindingMode.toView }) localeData = null;\n @bindable({ defaultBindingMode: bindingMode.toView }) spanClasses = \"\";\n i18nParams = i18nParams;\n\n constructor(i18n) {\n this.i18n = i18n;\n }\n\n @computedFrom(\"localeData.languageCode\")\n get languageCode() {\n const { languageCode = \"\" } = this.localeData || {};\n return languageCode;\n }\n\n @computedFrom(\"localeData.countryCode\")\n get countryCode() {\n const { countryCode = \"\" } = this.localeData || {};\n return countryCode;\n }\n\n @computedFrom(\"localeData.countryFlag\")\n get countryFlag() {\n const { countryFlag = \"\" } = this.localeData || {};\n return countryFlag;\n }\n\n @computedFrom(\"countryCode\")\n get flagImageAlt() {\n const i18nKey = `enums:countryCodeToName.${this.countryCode}`;\n const countryName = this.i18n.tr(i18nKey, this.i18nParams);\n return `flag of ${countryName}`;\n }\n\n}\n","// Define the view-model for the \"long-tonic-accent\" component\n\n// Import library modules\nimport { bindable, bindingMode, computedFrom, inject } from \"aurelia-framework\";\n\n// Import utility modules\nimport { unsetEventHandlers } from \"utilities/event\";\nimport {\n addTonicAccents,\n removeTonicAccents\n} from \"utilities/latin\";\nimport {\n getCaretPosition,\n setCaretPosition\n} from \"utilities/dom\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n\n// Import service modules\nimport EventService from \"services/event\";\n\n// Define internal parameters\nconst isAnyVowelRegExp = /[aeiouăĕĭŏŭāēīōū]/g;\nconst isAnyVowelWithShortcutRegExp = /[aeiouăĕĭŏŭāēīōū]\\|/g;\nconst isPlainOrShortAccentedVowelRegExp = /[aeiouăĕĭŏŭ]/;\n\n\n// Export LongTonicAccent class\n@inject(EventService)\nexport class LongTonicAccent {\n\n // Bound attributes\n @bindable({ defaultBindingMode: bindingMode.toView }) inputElement = null\n @bindable({ defaultBindingMode: bindingMode.toView }) uniqueId = \"\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n linkClasses = \"uk-link uk-link-heading\";\n @bindable({ defaultBindingMode: bindingMode.toView })\n spanClasses = \"uk-text uk-text-bold uk-text-medium\";\n\n // Local attributes\n isInputElementFocused = document.activeElement === this.inputElement;\n refreshShowButtonToggle = true;\n caretPosition = 0;\n eventsSubscriptions = [];\n i18nParams = i18nParams;\n\n constructor(eventService) {\n this.eventService = eventService;\n }\n\n\n // Lifecycle methods\n bind() {\n if (!this.uniqueId) {\n throw new Error(`Missing required attribute \"uniqueId\"`);\n } else {\n this.inputChangedEventName = `${this.uniqueId}Changed`;\n }\n this.setEventHandlers();\n }\n\n attached() {\n if (this.inputElement) {\n this.inputElement.addEventListener(\n \"focus\", this.handleInputElementFocusEvent.bind(this)\n );\n this.inputElement.addEventListener(\n \"click\", this.handleInputElementClickEvent.bind(this)\n );\n this.inputElement.addEventListener(\n \"keyup\", this.handleInputElementKeyupEvent.bind(this)\n );\n this.inputElement.addEventListener(\n \"blur\", this.handleInputElementBlurEvent.bind(this)\n );\n }\n }\n\n detached() {\n if (this.inputElement) {\n this.inputElement.removeEventListener(\n \"focus\", this.handleInputElementFocusEvent.bind(this)\n );\n this.inputElement.removeEventListener(\n \"click\", this.handleInputElementClickEvent.bind(this)\n );\n this.inputElement.removeEventListener(\n \"keyup\", this.handleInputElementKeyupEvent.bind(this)\n );\n this.inputElement.removeEventListener(\n \"focus\", this.handleInputElementBlurEvent.bind(this)\n );\n }\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Getter and setter methods\n @computedFrom(\"inputElement.value\", \"caretPosition\", \"refreshShowButtonToggle\" )\n get targetInputCharacter() {\n return this.inputElement ? \n this.inputElement.value[this.caretPosition-1] || \"\" : \"\";\n }\n\n @computedFrom(\"targetInputCharacter\")\n get plainTargetInputCharacter() {\n return removeTonicAccents(this.targetInputCharacter);\n }\n\n @computedFrom(\"plainTargetInputCharacter\")\n get longAccentedTargetInputCharacter() {\n return addTonicAccents(this.plainTargetInputCharacter, \"long\");\n }\n\n @computedFrom(\"plainTargetInputCharacter\")\n get tooltipI18nParams() {\n return { ...this.i18nParams, vowel: this.plainTargetInputCharacter };\n }\n\n @computedFrom(\"targetInputCharacter\")\n get showAddLongTonicAccentButton() {\n return this.isInputElementFocused &&\n isPlainOrShortAccentedVowelRegExp.test(this.targetInputCharacter);\n }\n\n\n // Core methods\n updateCaretPosition() {\n this.caretPosition = this.inputElement ?\n getCaretPosition(this.inputElement) : 0;\n }\n\n addLongTonicAccent() {\n this.inputElement.value = this.inputElement.value\n .replaceAll(isAnyVowelRegExp, (match, matchPosition) => {\n return matchPosition === this.caretPosition-1 ?\n this.longAccentedTargetInputCharacter : match;\n });\n setCaretPosition(this.inputElement, this.caretPosition);\n this.publishInputChangedEvent();\n }\n\n replaceLongAccentShortcut() {\n if (this.targetInputCharacter === \"|\") {\n this.inputElement.value = this.inputElement.value\n .replaceAll(isAnyVowelWithShortcutRegExp, (match, matchPosition) => {\n if (matchPosition === this.caretPosition-2) {\n const vowel = this.inputElement.value[matchPosition];\n const plainVowel = removeTonicAccents(vowel);\n return addTonicAccents(plainVowel, \"long\");\n }\n return match;\n });\n setCaretPosition(this.inputElement, this.caretPosition-1);\n this.publishInputChangedEvent();\n }\n }\n\n\n // Event filters\n filterEventsByUniqueId({ uniqueId = \"\" }) {\n return uniqueId === this.uniqueId;\n }\n\n\n // Event handlers\n setEventHandlers() {\n this.eventsSubscriptions = [\n this.eventService.subscribe({\n eventName: this.inputChangedEventName,\n eventHandler: this.handleInputChangedEvent.bind(this),\n eventFilter: this.filterEventsByUniqueId.bind(this)\n }),\n this.eventService.subscribe({\n eventName: \"updateTonicAccentsButtons\",\n eventHandler: this.handleUpdateTonicAccentsButtonsEvent.bind(this),\n eventFilter: this.filterEventsByUniqueId.bind(this)\n })\n ];\n }\n\n handleInputElementFocusEvent() {\n this.isInputElementFocused = true;\n this.updateCaretPosition();\n }\n handleInputChangedEvent() {\n this.updateCaretPosition();\n }\n handleInputElementBlurEvent() {\n this.isInputElementFocused = false;\n }\n handleUpdateTonicAccentsButtonsEvent({ uniqueId }) {\n if (uniqueId === this.uniqueId) {\n this.updateCaretPosition();\n this.refreshShowButtonToggle = !this.refreshShowButtonToggle;\n }\n }\n\n handleInputElementClickEvent() {\n this.updateCaretPosition();\n }\n handleInputElementKeyupEvent() {\n this.updateCaretPosition();\n this.replaceLongAccentShortcut();\n }\n handleLinkElementClickEvent() {\n this.addLongTonicAccent();\n this.publishUpdateTonicAccentsButtonsEvent();\n }\n\n\n // Event publishers\n publishInputChangedEvent() {\n this.eventService.publish({\n eventName: this.inputChangedEventName,\n eventData: {\n newValue: this.inputElement.value\n }\n });\n }\n publishUpdateTonicAccentsButtonsEvent() {\n this.eventService.publish({\n eventName: \"updateTonicAccentsButtons\",\n eventData: {\n uniqueId: this.uniqueId\n }\n });\n }\n\n}\n","// Define the view-model for the \"merge-next-card-icon\" component\n\n// Import library modules\nimport { bindable, bindingMode } from \"aurelia-framework\";\n\n\n// Export MergeNextCardIcon class\nexport class MergeNextCardIcon {\n\n // Attributes\n @bindable({ defaultBindingMode: bindingMode.toView }) iconSize = \"1em\";\n @bindable({ defaultBindingMode: bindingMode.toView }) \n iconRelativeSpacing = \"-0.35em\";\n\n}\n","// Define the view-model for the \"merge-previous-card-icon\" component\n\n// Import library modules\nimport { bindable, bindingMode } from \"aurelia-framework\";\n\n\n// Export MergePreviousCardIcon class\nexport class MergePreviousCardIcon {\n\n // Attributes\n @bindable({ defaultBindingMode: bindingMode.toView }) iconSize = \"1em\";\n @bindable({ defaultBindingMode: bindingMode.toView }) \n iconRelativeSpacing = \"-0.35em\";\n\n}\n","// Define the view-model for the \"modal\" element\n\n// Import library modules\nimport { bindable, bindingMode, inject } from \"aurelia-framework\";\nimport UIkit from \"uikit\";\n\n// Import utility modules\nimport { typeOf } from \"utilities/etc\";\n\n// Import service modules\nimport UserService from \"services/user\";\n\n// Define internal parameters\nconst allowedCloseButtonTypes = [ \"default\", \"outside\" ];\n\n\n// Export the \"Modal\" class\n@inject(UserService)\nexport class Modal {\n\n // Attributes\n @bindable({ defaultBindingMode: bindingMode.toView })\n modalParams = null;\n @bindable({ defaultBindingMode: bindingMode.toView })\n showCloseButton = true;\n @bindable({ defaultBindingMode: bindingMode.toView })\n closeButtonType = \"default\"; // default|outside\n @bindable({ defaultBindingMode: bindingMode.toView })\n escClose = true;\n @bindable({ defaultBindingMode: bindingMode.toView })\n backgroundClose = false; // modal won't close properly -> disabled it\n @bindable({ defaultBindingMode: bindingMode.toView })\n stackModals = true;\n @bindable({ defaultBindingMode: bindingMode.toView })\n conditionallyExtendSession = true;\n\n constructor(userService) {\n this.userService = userService;\n }\n\n bind() {\n if (!allowedCloseButtonTypes.includes(this.closeButtonType)) {\n throw new Error(`Invalid close-button-type property ` +\n `\"${this.closeButtonType}\"`);\n } else if (typeOf(this.showCloseButton) !== \"boolean\") {\n throw new Error(`Parameter \"showCloseButton\" should be a boolean`);\n } else if (typeOf(this.escClose) !== \"boolean\") {\n throw new Error(`Parameter \"escClose\" should be a boolean`);\n } else if (typeOf(this.backgroundClose) !== \"boolean\") {\n throw new Error(`Parameter \"backgroundClose\" should be a boolean`);\n } else if (typeOf(this.stackModals) !== \"boolean\") {\n throw new Error(`Parameter \"stackModals\" should be a boolean`);\n } else if (typeOf(this.conditionallyExtendSession) !== \"boolean\") {\n throw new Error(`Parameter \"conditionallyExtendSession\" ` +\n `should be a boolean`);\n }\n if (this.conditionallyExtendSession) {\n this.userService.conditionallyExtendSession();\n }\n this.modalParams = {\n ...(this.modalParams || {}),\n escClose: this.escClose,\n bgClose: this.backgroundClose,\n stack: this.stackModals\n };\n }\n\n attached() {\n UIkit.modal(this.modalElement, this.modalParams).show();\n }\n\n detached() {\n UIkit.modal(this.modalElement, this.modalParams).hide();\n }\n\n}\n","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n\\n \\n \\n \\n \\n \\n ${\\\"alerts:availabilityStatus.applicationFullyAvailable\\\" & t: i18nParams}!\\n \\n\\n \\n \\n \\n \\n ${\\\"alerts:availabilityStatus.networkAvailable\\\" & t: i18nParams}\\n \\n \\n\\n \\n \\n \\n \\n ${\\\"alerts:availabilityStatus.apiServiceAvailable\\\" & t: i18nParams}\\n \\n \\n\\n \\n \\n \\n \\n ${\\\"alerts:availabilityStatus.payServiceAvailable\\\" & t: i18nParams}\\n \\n \\n \\n\\n \\n \\n \\n ${\\\"alerts:availabilityStatus.applicationPartlyUnavailable\\\" & t: i18nParams}!\\n \\n\\n \\n \\n \\n \\n ${\\\"alerts:availabilityStatus.apiServiceUnavailable\\\" & t: i18nParams}\\n \\n \\n\\n \\n \\n \\n \\n ${\\\"alerts:availabilityStatus.payServiceUnavailable\\\" & t: i18nParams}\\n \\n \\n\\n \\n \\n \\n \\n \\n \\n ${\\\"alerts:availabilityStatus:updateStatus\\\" & t: i18nParams}\\n \\n \\n ${\\\"alerts:availabilityStatus:updatingStatus\\\" & t: i18nParams}…\\n \\n \\n \\n \\n\\n \\n \\n \\n ${\\\"alerts:availabilityStatus.applicationUnavailable\\\" & t: i18nParams}!\\n \\n\\n \\n \\n \\n \\n ${\\\"alerts:availabilityStatus.networkUnavailable\\\" & t: i18nParams}\\n \\n \\n\\n \\n \\n \\n \\n ${\\\"alerts:availabilityStatus.apiServiceUnavailable\\\" & t: i18nParams}\\n \\n \\n\\n \\n \\n \\n \\n ${\\\"alerts:availabilityStatus.payServiceUnavailable\\\" & t: i18nParams}\\n \\n \\n\\n \\n \\n \\n \\n \\n \\n ${\\\"alerts:availabilityStatus:updateStatus\\\" & t: i18nParams}\\n \\n \\n ${\\\"alerts:availabilityStatus:updatingStatus\\\" & t: i18nParams}…\\n \\n \\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n ${\\\"main:showHelp\\\" & t}\\n \\n \\n\\n \\n \\n \\n \\n \\n \\n ${\\\"main:hideHelp\\\" & t}\\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n ${label}\\n \\n *\\n \\n \\n +\\n \\n \\n \\n \\n \\n ${required ? ' *' : recommended ? ' +' : ''}\\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n ${\\\"main:showHelp\\\" & t: i18nParams}\\n \\n \\n \\n \\n \\n \\n ${\\\"main:hideHelp\\\" & t: i18nParams}\\n \\n \\n \\n\\n \\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n ${label}\\n \\n *\\n \\n \\n +\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n ${label} \\n \\n *\\n \\n \\n +\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n ${label} \\n \\n *\\n \\n \\n +\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n ${\\\"main:loadingData\\\" & t: i18nParams}…\\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n\\n \\n \\n \\n\\n \\n 0\\\">\\n \\n \\n ${\\\"main:localePH\\\" & t}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n ${longAccentedTargetInputCharacter}\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n\\n\\n\";\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}